Введение в Jetpack Media3

Jetpack Media3 — это новая платформа для медиабиблиотек, позволяющая приложениям Android отображать насыщенные аудио- и видеоматериалы. Media3 предлагает простую архитектуру с широкими возможностями настройки, надежностью и оптимизацией, основанной на возможностях устройства, что позволяет избежать сложностей, связанных с фрагментацией.

В этом документе представлено введение в ключевые API для реализации сценариев воспроизведения и редактирования с помощью Media3.

Компоненты воспроизведения

Media3 предлагает несколько ключевых компонентов для воспроизведения. Классы, составляющие эти компоненты, будут вам знакомы, если вы работали с медиабиблиотеками Android.

На следующей диаграмме показано, как эти компоненты объединяются в типичном приложении.

Различные компоненты медиаприложения, использующего Media3, соединяются вместе несколькими простыми способами благодаря общим интерфейсам и классам.
Рисунок 1 : Компоненты медиа-приложения

Медиаплеер

Медиаплеер — это компонент вашего приложения, позволяющий воспроизводить медиафайлы. В Media3 вы найдете:

Сорт Описание Записка о реализации
Player Player — это интерфейс, который определяет традиционные высокоуровневые возможности медиаплеера, такие как возможность воспроизведения, паузы и поиска. В Media3 интерфейс Player представляет собой общий API, реализованный или используемый несколькими компонентами, включая, например, MediaSession и MediaController .
ExoPlayer ExoPlayer — это реализация интерфейса Player по умолчанию в Media3.

Узнайте больше о Media3 ExoPlayer

Медиа-сессия

Медиасеанс предоставляет универсальный способ взаимодействия с медиаплеером. Это позволяет приложению рекламировать воспроизведение медиаконтента внешним источникам и получать запросы на управление воспроизведением от внешних источников. В Media3 вы найдете:

Сорт Описание Записка о реализации
MediaSession Медиасеансы позволяют вашему приложению взаимодействовать с аудио- или видеоплеером. Они оповещают о воспроизведении медиафайлов извне и получают команды на воспроизведение от внешних источников. В Media3 для выполнения команд и получения текущего состояния MediaSession необходим Player .
MediaSessionService MediaSessionService хранит медиа-сеанс и связанный с ним проигрыватель в службе, отдельной от основной Activity вашего приложения, для обеспечения фонового воспроизведения.
MediaController Класс MediaController обычно используется для отправки команд извне вашего приложения, например, из других приложений или самой системы. Команды отправляются базовому Player связанного MediaSession . Класс MediaController реализует интерфейс Player , но при вызове метода MediaController отправляет команду, отправленную подключенному MediaSession . Клиентские приложения, такие как Google Assistant, могут использовать MediaController для управления воспроизведением в подключенном сеансе.
MediaLibraryService MediaLibraryService похож на MediaSessionService , за исключением того, что он включает дополнительные API, позволяющие предоставлять библиотеку контента клиентским приложениям.
MediaBrowser Класс MediaBrowser позволяет пользователю перемещаться по библиотеке контента медиа-приложения и выбирать, какие элементы воспроизводить. Класс MediaBrowser реализует интерфейсы MediaController и Player . Подобно MediaController , клиентские приложения, такие как Android Auto, обычно реализуют MediaBrowser .

Узнайте больше о Media3 MediaSession

Компоненты пользовательского интерфейса

Media3 предоставляет стандартные компоненты пользовательского интерфейса для просмотра видео и управления воспроизведением.

Сорт Описание Записка о реализации
PlayerView View по умолчанию для отображения элементов управления видео и воспроизведением. Подключается к ExoPlayer , MediaController или любому другому пользовательскому Player .
PlayerSurface Компоновочный элемент, представляющий собой специальную Surface для рисования, предназначенную для показа видео. Подключается к любому Player , но не содержит элементов управления воспроизведением. Используется только для рендеринга кадров и может изменять размер в соответствии с различными типами ContentScale . Этот и многие другие компонуемые элементы можно найти в утилитах Compose UI .

Узнайте больше о Media3 UI

Редактирование компонентов

Media3 включает API-интерфейсы Transformer для вариантов редактирования медиафайлов, в том числе:

  • Обработка аудио и видео, например добавление фильтров и эффектов
  • Обработка специальных форматов, таких как HDR-видео и замедленное видео
  • Композиция, например объединение нескольких входных файлов
  • Экспорт окончательного результата в файл
Сорт Описание Записка о реализации
Transformer Используйте класс Transformer для запуска и остановки преобразований, а также для проверки обновлений хода выполнения текущего преобразования.
Effects Объект Effects представляет собой набор аудио- и видеоэффектов, применяемых к медиа-элементу. Вы можете использовать ExoPlayer для предварительного просмотра эффектов, добавленных к медиа-элементу, перед началом процесса экспорта.
EditedMediaItem EditedMediaItem представляет собой медиа-элемент для обработки и изменения, которые нужно применить к нему.

Узнайте больше о Media3 Transformer

Вводное видео

Посмотрите видео ниже, где инженеры, создавшие Media3, рассказывают о нем подробнее.