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 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 включает API-интерфейсы Transformer для вариантов редактирования медиафайлов, в том числе:
- Обработка аудио и видео, например добавление фильтров и эффектов
- Обработка специальных форматов, таких как HDR-видео и замедленное видео
- Композиция, например объединение нескольких входных файлов
- Экспорт окончательного результата в файл
| Сорт | Описание | Записка о реализации | 
|---|---|---|
| Transformer | Используйте класс Transformerдля запуска и остановки преобразований, а также для проверки обновлений хода выполнения текущего преобразования. | |
| Effects | Объект Effectsпредставляет собой набор аудио- и видеоэффектов, применяемых к медиа-элементу. | Вы можете использовать ExoPlayerдля предварительного просмотра эффектов, добавленных к медиа-элементу, перед началом процесса экспорта. | 
| EditedMediaItem | EditedMediaItemпредставляет собой медиа-элемент для обработки и изменения, которые нужно применить к нему. | 
Узнайте больше о Media3 Transformer
Вводное видео
Посмотрите видео ниже, где инженеры, создавшие Media3, рассказывают о нем подробнее.
Полезные ссылки
- Центр разработчиков медиа
-  Документация ExoPlayer
- Руководство по миграции
- AndroidX Media3 на GitHub
- Пример приложения для медиа-сессии Media3
- Пример приложения Universal Android Music Player
