Типы поверхности,Типы поверхности

На этой странице описаны различные типы поверхностей, которые можно использовать для воспроизведения видео с помощью 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

В Compose решение взаимодействия использует AndroidView Composable для обертывания SurfaceView и TextureView . Два Composable, которые соответствуют этому, — это AndroidExternalSurface и AndroidEmbeddedExternalSurface .

Модуль Media3 ui-compose предоставляет PlayerSurface Composable, который связывает Player с Surface с учетом жизненного цикла. Типы поверхностей в данном случае следующие:

Типа none нет, поскольку это будет означать отсутствие включения PlayerSurface в дерево пользовательского интерфейса Compose.

,

На этой странице описаны различные типы поверхностей, которые можно использовать для воспроизведения видео с помощью 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

В Compose решение взаимодействия использует AndroidView Composable для обертывания SurfaceView и TextureView . Два Composable, которые соответствуют этому, — это AndroidExternalSurface и AndroidEmbeddedExternalSurface .

Модуль Media3 ui-compose предоставляет PlayerSurface Composable, который связывает Player с Surface с учетом жизненного цикла. Типы поверхностей в данном случае следующие:

Типа none нет, поскольку это будет означать отсутствие включения PlayerSurface в дерево пользовательского интерфейса Compose.