Jetpack Media3 – это новый дом для медиабиблиотек, который позволяет приложениям Android показывать насыщенный аудио- и визуальный контент. Media3 предлагает простую архитектуру с мощными возможностями настройки, надежностью и оптимизацией на основе возможностей устройства, что позволяет абстрагироваться от сложности, связанной с фрагментацией.
В этом документе представлены основные API для реализации воспроизведения и редактирования с помощью Media3.
Компоненты воспроизведения
Media3 предлагает несколько ключевых компонентов для воспроизведения. Классы, из которых состоят эти компоненты, будут вам знакомы, если вы работали с предыдущими медиабиблиотеками Android.
На следующей диаграмме показано, как эти компоненты объединяются в типичном приложении.
Медиапроигрыватель
Медиапроигрыватель – это компонент приложения, который позволяет воспроизводить медиафайлы. В 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 от инженеров, которые создали эту библиотеку:
Полезные ссылки
- Центр разработчиков медиаконтента
ExoPlayerдокумент- Руководство по переходу
- AndroidX Media3 на GitHub
- Пример приложения с сеансом мультимедиа Media3
- Пример приложения Universal Android Music Player