Знакомство с 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 Ассистент, могут использовать MediaController для управления воспроизведением в подключенном сеансе.
MediaLibraryService MediaLibraryService похож на MediaSessionService, но включает дополнительные API, позволяющие передавать библиотеку контента в клиентские приложения.
MediaBrowser Класс MediaBrowser позволяет пользователю перемещаться по библиотеке контента мультимедийного приложения и выбирать, что воспроизвести. Класс MediaBrowser реализует интерфейсы MediaController и Player. Как и MediaController, клиентские приложения, например Android Auto, обычно реализуют MediaBrowser.

Подробнее о Media3 MediaSession…

Компоненты интерфейса

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

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

Подробнее об интерфейсе Media3…

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

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

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

Подробнее о Media3 Transformer…

Вступительное видео

Посмотрите это видео, чтобы узнать о Media3 от инженеров, которые создали эту библиотеку: