표시 경로 유형

이 페이지에서는 Media3로 동영상을 재생하는 데 사용할 수 있는 다양한 유형의 화면과 사용 사례에 적합한 유형을 선택하는 방법을 설명합니다. Android의 Surface 객체에 관해 자세히 알아보려면 이 그래픽 문서를 참고하세요.

PlayerView의 노출 영역 유형 선택

PlayerViewsurface_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 컴포저블을 사용하여 SurfaceViewTextureView을 래핑합니다. 이에 해당하는 두 컴포저블은 AndroidExternalSurfaceAndroidEmbeddedExternalSurface입니다.

Media3 ui-compose 모듈은 수명 주기를 인식하는 방식으로 PlayerSurface에 연결하는 PlayerSurface 컴포저블을 제공합니다. 이 경우의 표시 유형은 다음과 같습니다.

Compose UI 트리에 PlayerSurface을 포함하지 않는 것에 해당하므로 none 유형은 없습니다.