이 페이지에서는 Media3로 동영상 재생에 사용할 수 있는 다양한 노출 영역 유형과 사용 사례에 적합한 유형을 선택하는 방법을 설명합니다. Android의 Surface 객체에 관해 자세히 알아보려면 이 그래픽 문서를 참고하세요.
PlayerView의 노출 영역 유형 선택
PlayerView
의 surface_type
속성을 사용하면 동영상 재생에 사용되는 노출 영역 유형을 설정할 수 있습니다. 허용되는 값은 다음과 같습니다.
surface_view
(SurfaceView
)texture_view
(TextureView
)spherical_gl_surface_view
(SphericalGLSurfaceView
) - 구형 동영상 재생video_decoder_gl_surface_view
(VideoDecoderGLSurfaceView
) - 확장 프로그램 렌더러를 사용한 동영상 렌더링none
- 오디오 재생 전용이며 표시 경로를 만들지 않기 위해 사용해야 합니다. 표시 경로를 만들면 비용이 많이 들 수 있기 때문입니다.
뷰가 일반 동영상 재생을 위한 경우 surface_view
또는 texture_view
를 사용해야 합니다. SurfaceView
는 동영상 재생에 있어 TextureView
보다 여러 가지 이점이 있습니다.
- 여러 기기에서 전력 소비량을 크게 줄입니다.
- 프레임 타이밍이 더 정확해져 동영상 재생이 더 원활해집니다.
- 지원 기기에서 고화질 HDR 동영상 출력을 지원합니다.
- DRM 보호 콘텐츠 재생 시 보안 출력 지원
- UI 레이어를 업스케일하는 Android TV 기기에서 디스플레이의 전체 해상도로 동영상 콘텐츠를 렌더링하는 기능입니다.
따라서 가능하면 SurfaceView
를 TextureView
보다 선호해야 합니다.
TextureView
는 SurfaceView
이 요구사항을 충족하지 않는 경우에만 사용해야 합니다. 한 가지 예는 다음 메모에 설명된 대로 Android 7.0 (API 수준 24) 이전에 동영상 노출 영역의 부드러운 애니메이션이나 스크롤이 필요한 경우입니다. 이 경우 SDK_INT
가 24 (Android 7.0) 미만인 경우에만 TextureView
를 사용하고 그 외의 경우에는 SurfaceView
를 사용하는 것이 좋습니다.
Compose에서 노출 영역 유형 선택
Compose에서 상호 운용성 솔루션은 AndroidView
컴포저블을 사용하여 SurfaceView
및 TextureView
를 래핑합니다. 이에 해당하는 두 컴포저블은 AndroidExternalSurface
및 AndroidEmbeddedExternalSurface
입니다.
Media3 ui-compose
모듈은 수명 주기를 인식하는 방식으로 Player
를 Surface
에 연결하는 PlayerSurface
컴포저블을 제공합니다. 이 경우 노출 영역 유형은 다음과 같습니다.
SURFACE_TYPE_SURFACE_VIEW
(실질적으로AndroidExternalSurface
)SURFACE_TYPE_TEXTURE_VIEW
(실질적으로AndroidEmbeddedExternalSurface
)
none
유형은 없습니다. Compose UI 트리에 PlayerSurface
를 포함하지 않는 것과 일치하기 때문입니다.