표시 경로 유형

이 페이지에서는 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 기기에서 디스플레이의 전체 해상도로 동영상 콘텐츠를 렌더링하는 기능입니다.

따라서 가능하면 SurfaceViewTextureView보다 선호해야 합니다. TextureViewSurfaceView이 요구사항을 충족하지 않는 경우에만 사용해야 합니다. 한 가지 예는 다음 메모에 설명된 대로 Android 7.0 (API 수준 24) 이전에 동영상 노출 영역의 부드러운 애니메이션이나 스크롤이 필요한 경우입니다. 이 경우 SDK_INT가 24 (Android 7.0) 미만인 경우에만 TextureView를 사용하고 그 외의 경우에는 SurfaceView를 사용하는 것이 좋습니다.

Compose에서 노출 영역 유형 선택

Compose에서 상호 운용성 솔루션은 AndroidView 컴포저블을 사용하여 SurfaceViewTextureView를 래핑합니다. 이에 해당하는 두 컴포저블은 AndroidExternalSurfaceAndroidEmbeddedExternalSurface입니다.

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

none 유형은 없습니다. Compose UI 트리에 PlayerSurface를 포함하지 않는 것과 일치하기 때문입니다.