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