В этом документе описаны поддерживаемые платформой Android медиакодеки, контейнеры и сетевые протоколы.
В таблицах ниже описана поддержка медиаформатов, встроенная в платформу Android. Да – формат доступен на мобильных устройствах и планшетах с любой версией Android. Если указана определенная платформа Android, формат доступен на телефонах и планшетах с этой и более поздними версиями. Формат может быть доступен и в более ранних версиях, но это не гарантируется. На устройствах других типов поддержка форматов мультимедиа может отличаться.
Обратите внимание, что некоторые мобильные устройства могут поддерживать дополнительные форматы или типы файлов, не указанные в этих таблицах. Кроме того, если вы используете MediaCodec напрямую, то можете получить доступ к любому из доступных медиаформатов независимо от поддерживаемых типов файлов и форматов контейнеров.
Функции для людей с нарушениями слуха
| Формат | Видеокодер | Декодер | Типы файлов и форматы контейнеров | Сведения | |
|---|---|---|---|---|---|
| Экстрактор | Мультиплексор | ||||
| AAC LC | ДА | ДА |
• 3GPP (.3gp) • ADTS raw AAC (.aac, ADIF не поддерживается) • MPEG-TS (.ts, не поддерживается перемотка, Android 3.0 и более поздние версии) |
• 3GPP (.3gp) • ADTS raw AAC (.aac, ADIF not supported) • MPEG-TS (not sure) (.ts, not seekable, Android 3.0+) |
Поддержка моно-, стерео- и 5.0/5.1-контента со стандартной частотой дискретизации от 8 до 48 кГц. |
| HE-AACv1 (AAC+) | Android 4.1 и более поздние версии | ДА | |||
| HE-AACv2 (улучшенный AAC+) | ДА | Поддержка стереоконтента, а также контента 5.0 и 5.1 со стандартной частотой дискретизации от 8 до 48 кГц. | |||
| xHE-AAC | Android 9 и более поздние версии | Поддержка контента с количеством каналов до 8 и стандартной частотой дискретизации от 8 до 48 кГц. | |||
| AAC ELD (улучшенный AAC с низкой задержкой) | Android 4.1 и более поздние версии | Android 4.1 и более поздние версии | Поддержка моно- и стереоконтента со стандартной частотой дискретизации от 16 до 48 кГц. | ||
| AMR-NB | ДА | ДА |
• 3GPP (.3gp) • AMR (.amr) |
• 3GPP (.3gp) • AMR (.amr) |
4,75–12,2 кбит/с, частота дискретизации 8 кГц |
| AMR-WB | ДА | ДА | 9 вариантов скорости передачи данных от 6,60 до 23,85 кбит/с с частотой дискретизации 16 кГц. | ||
| FLAC | Android 4.1 и более поздние версии | Android 3.1 и более поздние версии |
• FLAC (.flac) • MPEG-4 (.mp4, .m4a, Android 10+) • Matroska (.mkv) |
Моно/стерео (без многоканального звука). Частота дискретизации до 48 кГц (но на устройствах с выходной частотой 44,1 кГц рекомендуется использовать частоту до 44,1 кГц, так как понижающий преобразователь частоты дискретизации с 48 до 44,1 кГц не включает фильтр нижних частот). Рекомендуется 16 бит; для 24 бит сглаживание не применяется. | |
| MIDI | ДА |
• Тип 0 и 1 (.mid, .xmf, .mxmf) • RTTTL/RTX (.rtttl, .rtx) • OTA (.ota) • iMelody (.imy) |
MIDI типа 0 и 1. DLS версии 1 и 2. XMF и Mobile XMF. Поддержка форматов мелодий RTTTL/RTX, OTA и iMelody. | ||
| MP3 | ДА |
• MP3 (.mp3) • MPEG-4 (.mp4, .m4a, Android 10+) • Matroska (.mkv, Android 10+) |
Моно/стерео, постоянный битрейт (CBR) или переменный битрейт (VBR) 8–320 кбит/с | ||
| Opus | Android 10 и более поздние версии | Android 5.0 и более поздние версии |
• Ogg (.ogg) • MPEG-4 (.mp4) • Matroska (.mkv) |
• Ogg (.ogg) • WebM (.webm) |
|
| PCM/WAVE | Android 4.1 и более поздние версии | ДА | WAVE (.wav) | 8- и 16-битный линейный PCM (частота дискретизации зависит от аппаратного обеспечения). Частота дискретизации для записей PCM: 8000, 16 000 и 44 100 Гц. | |
| Vorbis | ДА |
• Ogg (.ogg) • Matroska (.mkv, Android 4.0+) • MPEG-4 (.mp4, .m4a, Android 10+) |
• WebM (.webm) | ||
Поддержка видео
Форматы видео
| Формат | Видеокодер | Декодер | Типы файлов и форматы контейнеров | Сведения | |
|---|---|---|---|---|---|
| Экстрактор | Мультиплексор | ||||
| H.263 | ДА | ДА |
• 3GPP (.3gp) • MPEG-4 (.mp4) • Matroska (.mkv) |
• 3GPP (.3gp) • MPEG-4 (.mp4) |
Поддержка H.263 в Android 7.0 и более поздних версиях необязательна |
| H.264 AVC профиль базовой конфигурации (BP) |
Android 3.0+ | ДА |
• 3GPP (.3gp) • MPEG-4 (.mp4) • MPEG-TS (.ts, только аудио AAC, нельзя перемотать, Android 3.0+) • Matroska (.mkv) |
• 3GPP (.3gp) • MPEG-4 (.mp4) |
|
| H.264 AVC Main Profile (MP) |
Android 6.0 и более поздние версии | ДА | Декодер обязателен, а кодер рекомендуется. | ||
| H.265 HEVC | Android 5.0 и более поздние версии |
• MPEG-4 (.mp4) • Matroska (.mkv) |
• MPEG-4 (.mp4) | Основной профиль уровня 3 для мобильных устройств и основной профиль уровня 4.1 для Android TV | |
| MPEG-4 SP | ДА | • MPEG-4 (.mp4) | • MPEG-4 (.mp4) | ||
| VP8 | Android 4.3 и более поздние версии | Android 2.3.3 и более поздние версии |
• WebM (.webm) • Matroska (.mkv, Android 4.0+) |
• WebM (.webm) | Трансляция доступна только на устройствах с Android 4.0 и более поздних версий |
| VP9 | Android 4.4 или более поздней версии |
• WebM (.webm) • Matroska (.mkv) • MPEG-4 (.mp4) |
• WebM (.webm) | ||
| AV1; | Android 14 и более поздние версии | Android 10 и более поздние версии |
• MPEG-4 (.mp4) • Matroska (.mkv) |
• MPEG-4 (.mp4) | Начиная с Android 14 кодер и декодер являются обязательными. |
| APV | Android 16+ | Android 16+ | • MPEG-4 (.mp4) | • MPEG-4 (.mp4) | Начиная с Android 16 кодер и декодер обязательны. |
Рекомендации по кодированию видео
В таблице ниже перечислены профили и параметры кодирования видео фреймворка Android для медиа, рекомендованные для воспроизведения с помощью кодека H.264 профиля базовой конфигурации. Те же рекомендации применимы к кодеку Main Profile, который доступен только в Android 6.0 и более поздних версий.
| SD (низкое качество) | SD (высокое качество) | HD 720p (недоступно на всех устройствах) | |
|---|---|---|---|
| Разрешение видео | 176 x 144 пкс | 480 x 360 пикс. | 1280 x 720 пикселей |
| Частота кадров видео | 12 кадр/с | 30 кадров в секунду | 30 кадров в секунду |
| Битрейт | 56 кбит/с | 500 кбит/с | 2 Мбит/с |
| Аудиокодек | AAC-LC | AAC-LC | AAC-LC |
| Аудиоканалы | 1 (моно) | 2 (стерео) | 2 (стерео) |
| Скорость передачи данных аудио | 24 кбит/с | 128 кбит/с | 192 кбит/с |
В таблице ниже перечислены профили кодирования видео и параметры медиафреймворка Android, рекомендованные для воспроизведения с помощью медиакодека VP8.
| SD (низкое качество) | SD (высокое качество) | HD 720p (недоступно на всех устройствах) | HD 1080p (недоступно на всех устройствах) | |
|---|---|---|---|---|
| Разрешение видео | 320 x 180 пикс. | 640 x 360 пкс | 1280 x 720 пикселей | 1920 x 1080 пикс. |
| Частота кадров видео | 30 кадров в секунду | 30 кадров в секунду | 30 кадров в секунду | 30 кадров в секунду |
| Битрейт | 800 кбит/с | 2 Мбит/с | 4 Мбит/c | 10 Мбит/c |
Рекомендации по декодированию видео
Реализации устройств должны поддерживать динамическое переключение разрешения видео и частоты кадров с помощью стандартных API Android в рамках одного потока для всех кодеков VP8, VP9, H.264 и H.265 в реальном времени и до максимального разрешения, поддерживаемого каждым кодеком на устройстве.
Реализации, поддерживающие декодер Dolby Vision, должны соответствовать следующим требованиям:
- Используйте экстрактор с поддержкой Dolby Vision.
- Правильно отображать контент Dolby Vision на экране устройства или на стандартном видеовыходе (например, HDMI).
- Установите для индекса дорожки базового слоя с обратной совместимостью (если он есть) то же значение, что и для индекса дорожки комбинированного слоя Dolby Vision.
Требования к потоковому видео
Для видеоконтента, который передается по протоколам HTTP или RTSP, действуют дополнительные требования:
- В контейнерах 3GPP и MPEG-4 атом
moovдолжен предшествовать всем атомамmdat, но следовать за атомомftyp. - Для контейнеров 3GPP, MPEG-4 и WebM разница между размерами аудио- и видеосэмплов, соответствующих одному и тому же смещению по времени, не должна превышать 500 КБ. Чтобы свести к минимуму расхождение аудио и видео, попробуйте чередовать их небольшими фрагментами.
Поддержка изображений
| Формат | Видеокодер | Декодер | Сведения | Типы файлов Форматы контейнеров |
|---|---|---|---|---|
| BMP | ДА | BMP (.bmp); | ||
| GIF | ДА | GIF (.gif); | ||
| JPEG | ДА | ДА | Базовый + прогрессивный | JPEG (.jpg) |
| PNG | ДА | ДА | PNG (.png); | |
| WebP |
Android 4.0 и более поздние версии Без потерь: Android 10 и более поздние версии Прозрачность: Android 4.2.1 и более поздние версии |
Android 4.0 и более поздние версии Без потерь: Android 4.2.1 и более поздние версии Прозрачность: Android 4.2.1 и более поздние версии |
В Android 10 можно использовать кодирование без потерь, установив качество на уровне 100. | WebP (.webp); |
| HEIF |
Android 10 и более поздние версии (через MediaCodec или HeifWriter; не в Bitmap.compress)
|
Android 9.0 и более поздние версии | Устройство не обязательно. Узнайте, поддерживает ли 8-битный цвет ImageDecoder.isMimeTypeSupported("image/heif"). Для 10-битного декодирования требуется дополнительный профиль HEVC Main10. |
HEIF (.heic, .heif) |
| AVIF (профиль базовой конфигурации) |
Android 14 и более поздние версии (через MediaCodec; не в Bitmap.compress)
|
Android 12 и более поздние версии | 8-битное декодирование поддерживается в Android 12 и более поздних версиях. 10-битное декодирование является необязательным. Чтобы узнать, поддерживается ли оно, проверьте значение ImageDecoder.isMimeTypeSupported("image/avif") (даже если оно ложно, 8-битное декодирование будет работать). |
AVIF (.avif) |
Сетевые протоколы
Для воспроизведения аудио- и видеоконтента поддерживаются следующие сетевые протоколы:
- RTSP (RTP, SDP)
- Потоковая передача данных по HTTP/HTTPS
- Протокол для потоковой передачи данных по HTTP/HTTPS (черновик):
- только медиафайлы MPEG-2 TS;
- Протокол версии 3, Android 4.0 и более поздние версии
- Протокол версии 2, Android 3.x
- Не поддерживается в версиях Android ниже 3.0
Примечание. HTTPS не поддерживается в версиях Android ниже 3.1.
Форматы HDR-видео
Производители устройств могут включить любой формат HDR, используя архитектуру Android HDR, которая обеспечивает основные потребности форматов HDR: 10-битные буферы, метаданные (статические, динамические и отсутствующие), передаточную функцию и обработку цветового пространства.
Чтобы обеспечить единообразие для разработчиков и поддержку основных вариантов использования HDR, мы требуем, чтобы производители устройств, поддерживающих HDR, обеспечивали совместимость с несколькими базовыми форматами:
- Для воспроизведения профессионального контента, например потоковой передачи фильмов, требуется HDR10.
- Для записи и воспроизведения пользовательского контента мы требуем использовать HLG10, чтобы обеспечить единообразное качество на всех устройствах Android.
Производители устройств, которые добавляют поддержку HDR, должны поддерживать эти форматы, но могут также поддерживать дополнительные форматы, такие как HDR10+ или Dolby Vision.
| Формат | Функция передачи | Метаданные | Кодек | Битовая глубина |
|---|---|---|---|---|
| HLG10 | HLG | Нет | HEVC | 10 бит |
| HDR10 | PQ | Статический | HEVC | 10 бит |
| HDR10+ | PQ | Статический | HEVC | 10 бит |
| Dolby Vision 8.4 | HLG | Динамическая | HEVC | 10 бит |
Рекомендации по обработке форматов
| Формат записи | Изначальный формат | Формат доставки |
| HLG | Поддержка HDR HLG в серверной части приложения | Устройства, поддерживающие HDR (HLG):
HLG Устройства поддерживают HDR (только PQ, без HLG): SDR (преобразование тона из HLG в SDR на сервере) Устройства, не поддерживающие HDR: SDR (преобразование тонов из HLG в SDR на сервере). |
Вариант использования 2. Съемка с помощью встроенной камеры или импорт из галереи пользователя (серверное приложение поддерживает HDR)
| Формат записи | Изначальный формат | Формат доставки |
| HLG | HLG | Как и при использовании захвата экрана в приложении |
| HDR10+ | HLG
Выполните тональное отображение из HDR10+ (PQ) в HLG перед загрузкой с помощью API преобразователя. |
Как и при использовании захвата экрана в приложении |
| DV8.4 | HLG
(DV8.4 использует HLG, поэтому битовый поток будет вести себя как HLG, и сопоставление тонов не потребуется). |
Как и при использовании захвата экрана в приложении |
Пример 3. Серверная часть приложения не поддерживает HDR
| Формат записи | Изначальный формат | Формат доставки |
| Любой формат | SDR
Преобразование тональности из HLG в SDR перед загрузкой с помощью API Transformer |
SDR |