이 페이지에서는 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 기기에서 디스플레이의 전체 해상도로 동영상 콘텐츠를 렌더링하는 기능
따라서 가능한 경우 TextureView
보다 SurfaceView
를 사용하는 것이 좋습니다.
SurfaceView
가 요구사항을 충족하지 않는 경우에만 TextureView
를 사용해야 합니다. 한 가지 예는 다음 참고사항에 설명된 대로 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
을 포함하지 않는 것에 해당하므로 없습니다.