Este documento descreve o suporte a codec de mídia, contêiner e protocolo de rede fornecido pela plataforma Android.
As tabelas abaixo descrevem a compatibilidade de formatos de mídia integrada à plataforma Android. SIM significa que o formato está disponível em dispositivos portáteis e tablets com todas as versões do Android. Quando uma plataforma Android específica é especificada, o formato está disponível em smartphones e tablets com essa versão e todas as versões posteriores. O formato também pode estar disponível em versões anteriores, mas isso não é garantido. Em formatos diferentes de smartphones e tablets, o suporte a formatos de mídia pode variar.
Um dispositivo móvel específico pode ser compatível com outros formatos ou tipos de arquivo que não estão listados nessas tabelas. Além disso, se você usar um MediaCodec diretamente, poderá acessar qualquer um dos formatos de mídia disponíveis, independentemente dos tipos de arquivo e formatos de contêiner compatíveis.
Compatibilidade de áudio
| Formato | Codificador | Decodificador | Formatos de contêiner de tipos de arquivo | Detalhes | |
|---|---|---|---|---|---|
| Extrator | Muxer | ||||
| AAC LC | SIM | SIM |
• 3GPP (.3gp) • AAC bruto ADTS (.aac, ADIF indisponível) • MPEG-TS (.ts, não pesquisável, Android 3.0 ou mais recente) |
• 3GPP (.3gp) • AAC bruto ADTS (.aac, ADIF indisponível) • MPEG-TS (não tenho certeza) (.ts, não pesquisável, Android 3.0 ou mais recente) |
Suporte para conteúdo mono/estéreo/5.0/5.1 com taxas de amostragem padrão de 8 a 48 kHz. |
| HE-AACv1 (AAC+) | Android 4.1 ou mais recente | SIM | |||
| HE-AACv2 (AAC+ aprimorado) | SIM | Suporte para conteúdo estéreo/5.0/5.1 com taxas de amostragem padrão de 8 a 48 kHz. | |||
| xHE-AAC | Android 9 ou mais recente | Suporte para conteúdo de até 8 canais com taxas de amostragem padrão de 8 a 48 kHz | |||
| AAC ELD (AAC aprimorado com atraso baixo) | Android 4.1 ou mais recente | Android 4.1 ou mais recente | Suporte a conteúdo mono/estéreo com taxas de amostragem padrão de 16 a 48 kHz | ||
| AMR-NB | SIM | SIM |
• 3GPP (.3gp) • AMR (.amr) |
• 3GPP (.3gp) • AMR (.amr) |
4,75 a 12,2 kbps com amostragem a 8 kHz. |
| AMR-WB | SIM | SIM | 9 taxas de 6,60 kbit/s a 23,85 kbit/s com amostragem a 16 kHz. | ||
| FLAC | Android 4.1 ou mais recente | Android 3.1 ou mais recente |
• FLAC (.flac) • MPEG-4 (.mp4, .m4a, Android 10 ou mais recente) • Matroska (.mkv) |
Mono/estéreo (sem multicanal). Taxas de amostragem de até 48 kHz (mas é recomendável usar até 44,1 kHz em dispositivos com saída de 44,1 kHz, já que o downsampler de 48 para 44,1 kHz não inclui um filtro passa-baixa). 16 bits recomendado; nenhum dithering aplicado para 24 bits. | |
| MIDI | SIM |
• Tipo 0 e 1 (.mid, .xmf, .mxmf) • RTTTL/RTX (.rtttl, .rtx) • OTA (.ota) • iMelody (.imy) |
MIDI tipos 0 e 1. DLS versões 1 e 2. XMF e XMF para celular. Compatível com os formatos de toque RTTTL/RTX, OTA e iMelody. | ||
| MP3 | SIM |
• MP3 (.mp3) • MPEG-4 (.mp4, .m4a, Android 10 ou mais recente) • Matroska (.mkv, Android 10 ou mais recente) |
Taxa de bits mono/estéreo constante (CBR) ou variável (VBR) de 8-320 kbps. | ||
| Opus | Android 10 ou mais recente | Android 5.0 ou mais recente |
• Ogg (.ogg) • MPEG-4 (.mp4) • Matroska (.mkv) |
• Ogg (.ogg) • WebM (.webm) |
|
| PCM/WAVE | Android 4.1 ou mais recente | SIM | WAVE (.wav) | PCM linear de 8 e 16 bits (taxas até o limite de hardware). Taxas de amostragem para gravações PCM brutas em 8.000, 16.000 e 44.100 Hz. | |
| Vorbis | SIM |
• Ogg (.ogg) • Matroska (.mkv, Android 4.0 ou mais recente) • MPEG-4 (.mp4, .m4a, Android 10 ou mais recente) |
• WebM (.webm) | ||
Compatibilidade de vídeo
Formatos de vídeo
| Formato | Codificador | Decodificador | Formatos de contêiner de tipos de arquivo | Detalhes | |
|---|---|---|---|---|---|
| Extrator | Muxer | ||||
| H.263 | SIM | SIM |
• 3GPP (.3gp) • MPEG-4 (.mp4) • Matroska (.mkv) |
• 3GPP (.3gp) • MPEG-4 (.mp4) |
A compatibilidade com H.263 é opcional no Android 7.0+ |
| H.264 AVC Perfil de referência (BP) |
Android 3.0 ou superior | SIM |
• 3GPP (.3gp) • MPEG-4 (.mp4) • MPEG-TS (.ts, somente áudio AAC, não pesquisável, Android 3.0 ou mais recente) • Matroska (.mkv) |
• 3GPP (.3gp) • MPEG-4 (.mp4) |
|
| H.264 AVC Perfil principal (MP) |
Android 6.0 ou mais recente | SIM | O decodificador é obrigatório, o codificador é recomendado. | ||
| H.265 HEVC | Android 5.0 ou mais recente |
• MPEG-4 (.mp4) • Matroska (.mkv) |
• MPEG-4 (.mp4) | Nível 3 do perfil principal para dispositivos móveis e nível 4.1 do perfil principal para Android TV | |
| MPEG-4 SP | SIM | • MPEG-4 (.mp4) | • MPEG-4 (.mp4) | ||
| VP8 | Android 4.3 ou mais recente | Android 2.3.3 ou mais recente |
• WebM (.webm) • Matroska (.mkv, Android 4.0 ou mais recente) |
• WebM (.webm) | Streaming possível apenas no Android 4.0 e versões posteriores. |
| VP9 | Android 4.4 ou superior |
• WebM (.webm) • Matroska (.mkv) • MPEG-4 (.mp4) |
• WebM (.webm) | ||
| AV1 | Android 14 ou mais recente | Android 10 ou mais recente |
• MPEG-4 (.mp4) • Matroska (.mkv) |
• MPEG-4 (.mp4) | O codificador e o decodificador são obrigatórios a partir do Android 14. |
| APV | Android 16+ | Android 16 ou mais recente | • MPEG-4 (.mp4) | • MPEG-4 (.mp4) | O codificador e o decodificador são obrigatórios a partir do Android 16. |
Recomendações de codificação de vídeo
A tabela abaixo lista os perfis e parâmetros de codificação de vídeo da estrutura de mídia do Android recomendados para reprodução usando o codec de perfil de referência H.264. As mesmas recomendações se aplicam ao codec de perfil principal, que está disponível apenas no Android 6.0 e versões mais recentes.
| SD (baixa qualidade) | SD (alta qualidade) | HD 720p (N/A em todos os dispositivos) | |
|---|---|---|---|
| Resolução do vídeo | 176 x 144 px | 480 x 360 px | 1.280 x 720 px |
| Frame rate do vídeo | 12 fps | 30 fps | 30 fps |
| Taxa de bits do vídeo | 56 Kbps | 500 Kbps | 2 Mbps |
| Codificação de áudio | AAC-LC | AAC-LC | AAC-LC |
| Canais de áudio | 1 (mono) | 2 (estéreo) | 2 (estéreo) |
| Taxa de bits de áudio | 24 Kbps | 128 Kbps | 192 Kbps |
A tabela abaixo lista os perfis e parâmetros de codificação de vídeo da estrutura de mídia do Android recomendados para reprodução usando o codec de mídia VP8.
| SD (baixa qualidade) | SD (alta qualidade) | HD 720p (N/A em todos os dispositivos) | HD 1.080p (N/A em todos os dispositivos) | |
|---|---|---|---|---|
| Resolução do vídeo | 320 x 180 px | 640 x 360 px | 1.280 x 720 px | 1.920 x 1.080 px |
| Frame rate do vídeo | 30 fps | 30 fps | 30 fps | 30 fps |
| Taxa de bits do vídeo | 800 Kbps | 2 Mbps | 4 Mbps | 10 Mbps |
Recomendações de decodificação de vídeo
As implementações de dispositivos precisam oferecer suporte à resolução de vídeo dinâmica e à troca de taxa de frames usando as APIs Android padrão na mesma transmissão para todos os codecs VP8, VP9, H.264 e H.265 em tempo real e até a resolução máxima compatível com cada codec no dispositivo.
As implementações compatíveis com o decodificador Dolby Vision precisam seguir estas diretrizes:
- Forneça um extrator compatível com Dolby Vision.
- Mostrar corretamente o conteúdo Dolby Vision na tela do dispositivo ou em uma porta de saída de vídeo padrão (por exemplo, HDMI).
- Defina o índice da faixa das camadas de base compatíveis com versões anteriores (se houver) para ser o mesmo índice da faixa da camada combinada do Dolby Vision.
Requisitos de stream de vídeo
Para conteúdo de vídeo transmitido por HTTP ou RTSP, há mais requisitos:
- Para contêineres 3GPP e MPEG-4, o átomo
moovprecisa preceder qualquer átomomdat, mas precisa suceder o átomoftyp. - Para os contêineres 3GPP, MPEG-4 e WebM, as amostras de áudio e vídeo correspondentes ao mesmo ajuste de horário não podem estar a mais de 500 KB de distância. Para minimizar esse deslocamento de áudio/vídeo, intercale áudio e vídeo em tamanhos menores.
Compatibilidade de imagem
| Formato | Codificador | Decodificador | Detalhes | Tipos de arquivo Formatos de contêiner |
|---|---|---|---|---|
| BMP | SIM | BMP (.bmp) | ||
| GIF | SIM | GIF (.gif) | ||
| JPEG | SIM | SIM | Básico+progressivo | JPEG (.jpg) |
| PNG | SIM | SIM | PNG (.png) | |
| WebP |
Android 4.0 ou mais recente Sem perda: Android 10 ou mais recente Transparência: Android 4.2.1 ou mais recente |
Android 4.0 ou mais recente Sem perdas: Android 4.2.1 ou mais recente Transparência: Android 4.2.1 ou mais recente |
A codificação sem perda pode ser alcançada no Android 10 usando uma qualidade de 100. | WebP (.webp) |
| HEIF |
Android 10 ou versões mais recentes (via MediaCodec ou HeifWriter; não em Bitmap.compress)
|
Android 9.0 ou mais recente | O dispositivo é opcional. Confira ImageDecoder.isMimeTypeSupported("image/heif") para saber mais sobre o suporte a 8 bits. A decodificação de 10 bits exige o perfil HEVC Main10 opcional. |
HEIF (.heic; .heif) |
| AVIF (perfil de referência) |
Android 14 ou mais recente (via MediaCodec; não em Bitmap.compress)
|
Android 12 ou mais recente | A decodificação de 8 bits é compatível com o Android 12 e versões mais recentes. A decodificação de 10 bits é opcional. Verifique ImageDecoder.isMimeTypeSupported("image/avif") para saber se há suporte a 10 bits. Mesmo que seja falso, a decodificação de 8 bits ainda funciona. |
AVIF (.avif) |
Protocolos de rede
Os seguintes protocolos de rede são compatíveis com a reprodução de áudio e vídeo:
- RTSP (RTP, SDP)
- Streaming progressivo HTTP/HTTPS
- Protocolo de rascunho (em inglês) do HTTP/HTTP Live Streaming:
- Somente arquivos de mídia TS MPEG-2
- Versão 3 do protocolo Android 4.0 e versões mais recentes
- Versão 2 do protocolo Android 3.x
- Não compatível com versões anteriores ao Android 3.0
Observação: HTTPS não é compatível com versões anteriores ao Android 3.1.
Formatos de vídeo HDR
Os OEMs podem ativar qualquer formato HDR que escolherem com a arquitetura HDR do Android, que oferece as necessidades principais dos formatos HDR: buffers de 10 bits, metadados (estáticos, dinâmicos e nenhum), função de transferência e processamento de espaço de cores.
Para garantir a consistência para os desenvolvedores e abordar os principais casos de uso de HDR, exigimos que os OEMs ofereçam suporte a alguns formatos básicos em dispositivos compatíveis com HDR:
- Para reprodução de conteúdo profissional, como streaming de filmes, é necessário ter HDR10.
- Para captura e reprodução de conteúdo gerado pelo usuário, exigimos o HLG10 para oferecer uma experiência consistente em dispositivos Android.
Os OEMs que adicionam suporte a HDR precisam oferecer suporte a esses formatos, mas também podem oferecer suporte a outros formatos, como HDR10+ ou Dolby Vision.
| Formato | Função de transferência | Metadados | Codec | Profundidade de bit |
|---|---|---|---|---|
| HLG10 | HLG | Não | HEVC | 10 bits |
| HDR10 | PQ | Estático | HEVC | 10 bits |
| HDR10+ | PQ | Estático | HEVC | 10 bits |
| Dolby Vision 8.4 | HLG | Dinâmico | HEVC | 10 bits |
Recomendações de tratamento de formato
| Formato de captura | Formato de upload | Formato de entrega |
| HLG | O back-end do app é compatível com HDR HLG | Dispositivos compatíveis com HDR (HLG):
HLG Dispositivos compatíveis com HDR (sem suporte a HLG, apenas PQ): SDR (mapeamento de tons de HLG para SDR no back-end) Dispositivos que não são compatíveis com HDR: SDR (mapeamento de tons de HLG para SDR no back-end) |
Caso de uso 2: captura com a câmera nativa ou importação da galeria do usuário (o back-end do app oferece suporte a HDR)
| Formato de captura | Formato de upload | Formato de entrega |
| HLG | HLG | Igual ao caso de uso de captura no app |
| HDR10+ | HLG
Mapear tons de HDR10+ (PQ) para HLG antes do upload usando APIs Transformer |
Igual ao caso de uso de captura no app |
| DV8.4 | HLG
(O DV8.4 usa HLG, e o bitstream se comporta como HLG. Portanto, não é necessário mapeamento de tons.) |
Igual ao caso de uso de captura no app |
Caso de uso 3: o back-end do app não é compatível com HDR
| Formato de captura | Formato de upload | Formato de entrega |
| Qualquer formato | SDR
Mapear tons de HLG para SDR antes do upload usando as APIs Transformer |
SDR |