На этой странице описаны различные типы поверхностей, которые можно использовать для воспроизведения видео с помощью Media3, а также способы выбора подходящего типа для вашего случая. Чтобы узнать больше об объектах Surface в Android, ознакомьтесь с этой графической документацией .
Выберите тип поверхности для PlayerView
 Атрибут surface_type объекта PlayerView позволяет задать тип поверхности, используемой для воспроизведения видео. Допустимые значения:
-  
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.
 - Возможность отображения видеоконтента с полным разрешением дисплея на устройствах Android TV, которые масштабируют слой пользовательского интерфейса.
 
 Поэтому по возможности следует отдавать предпочтение SurfaceView , а не TextureView . TextureView следует использовать только в том случае, если SurfaceView не отвечает вашим потребностям. Например, в случае, когда требуется плавная анимация или прокрутка видеоповерхности в версиях до Android 7.0 (уровень API 24), как описано в следующих примечаниях. В этом случае предпочтительно использовать TextureView только в том случае, если SDK_INT меньше 24 (Android 7.0), а в противном случае — SurfaceView .
Выберите тип поверхности в Compose
 In Compose, the interop solution uses the AndroidView Composable to wrap SurfaceView and TextureView . The two Composables that correspond to that are AndroidExternalSurface and AndroidEmbeddedExternalSurface .
 Модуль Media3 ui-compose предоставляет компонуемый PlayerSurface , который связывает Player с Surface с учётом жизненного цикла. В данном случае используются следующие типы поверхностей:
-  
SURFACE_TYPE_SURFACE_VIEW(фактическиAndroidExternalSurface) -  
SURFACE_TYPE_TEXTURE_VIEW(фактическиAndroidEmbeddedExternalSurface) 
 Тип none отсутствует, поскольку это соответствовало бы отсутствию PlayerSurface в дереве Compose UI.