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