Questo documento descrive il supporto per codec multimediali, contenitori e protocolli di rete fornito dalla piattaforma Android.
Le tabelle seguenti descrivono il supporto dei formati multimediali integrato nella piattaforma Android. SÌ significa che il formato è disponibile su dispositivi portatili e tablet con tutte le versioni di Android. Se viene specificata una piattaforma Android specifica, il formato è disponibile su smartphone e tablet che eseguono quella versione e tutte le versioni successive. Il formato potrebbe essere disponibile anche nelle versioni precedenti, ma non è garantito. Su fattori di forma diversi da smartphone e tablet, il supporto dei formati multimediali può variare.
Tieni presente che un determinato dispositivo mobile potrebbe supportare formati o tipi di file aggiuntivi non elencati in queste tabelle. Inoltre, se utilizzi un MediaCodec direttamente, puoi accedere a qualsiasi formato multimediale disponibile indipendentemente dai tipi di file e dai formati contenitore supportati.
Supporto audio
| Formato | Codificatore | Decodificatore | Formati dei contenitori dei tipi di file | Dettagli | |
|---|---|---|---|---|---|
| Estrattore | Muxer | ||||
| AAC LC | SÌ | SÌ |
• 3GPP (.3gp) • ADTS raw AAC (.aac, ADIF not supported) • MPEG-TS (.ts, not seekable, Android 3.0+) |
• 3GPP (.3gp) • ADTS raw AAC (.aac, ADIF not supported) • MPEG-TS (not sure) (.ts, not seekable, Android 3.0+) |
Supporto per contenuti mono/stereo/5.0/5.1 con frequenze di campionamento standard da 8 a 48 kHz. |
| HE-AACv1 (AAC+) | Android 4.1+ | SÌ | |||
| HE-AACv2 (AAC+ avanzato) | SÌ | Supporto per contenuti stereo/5.0/5.1 con frequenze di campionamento standard da 8 a 48 kHz. | |||
| xHE-AAC | Android 9+ | Supporto di contenuti fino a 8 canali con frequenze di campionamento standard da 8 a 48 kHz | |||
| AAC ELD (AAC a bassa latenza avanzato) | Android 4.1+ | Android 4.1+ | Supporto di contenuti mono/stereo con frequenze di campionamento standard da 16 a 48 kHz | ||
| AMR-NB | SÌ | SÌ |
• 3GPP (.3gp) • AMR (.amr) |
• 3GPP (.3gp) • AMR (.amr) |
Da 4,75 a 12,2 kbps campionati a 8 kHz |
| AMR-WB | SÌ | SÌ | 9 velocità da 6,60 kbit/s a 23,85 kbit/s campionate a 16 kHz | ||
| FLAC | Android 4.1+ | Android 3.1+ |
• FLAC (.flac) • MPEG-4 (.mp4, .m4a, Android 10+) • Matroska (.mkv) |
Mono/Stereo (nessun multicanale). Frequenze di campionamento fino a 48 kHz (ma fino a 44,1 kHz è consigliato sui dispositivi con uscita a 44,1 kHz, poiché il downsampler da 48 a 44,1 kHz non include un filtro passa-basso). Consigliati 16 bit; nessun dithering applicato per 24 bit. | |
| MIDI | SÌ |
• Tipo 0 e 1 (.mid, .xmf, .mxmf) • RTTTL/RTX (.rtttl, .rtx) • OTA (.ota) • iMelody (.imy) |
MIDI di tipo 0 e 1. DLS versione 1 e 2. XMF e XMF mobile. Supporto dei formati di suoneria RTTTL/RTX, OTA e iMelody | ||
| MP3 | SÌ |
• MP3 (.mp3) • MPEG-4 (.mp4, .m4a, Android 10+) • Matroska (.mkv, Android 10+) |
Mono/Stereo 8-320 Kbps costante (CBR) o velocità in bit variabile (VBR) | ||
| Opus | Android 10+ | Android 5.0+ |
• Ogg (.ogg) • MPEG-4 (.mp4) • Matroska (.mkv) |
• Ogg (.ogg) • WebM (.webm) |
|
| PCM/WAVE | Android 4.1+ | SÌ | WAVE (.wav) | PCM lineare a 8 e 16 bit (frequenze fino al limite dell'hardware). Frequenze di campionamento per le registrazioni PCM non elaborate a 8000, 16.000 e 44.100 Hz. | |
| Vorbis | SÌ |
• Ogg (.ogg) • Matroska (.mkv, Android 4.0+) • MPEG-4 (.mp4, .m4a, Android 10+) |
• WebM (.webm) | ||
Supporto video
Formati video
| Formato | Codificatore | Decodificatore | Formati dei contenitori dei tipi di file | Dettagli | |
|---|---|---|---|---|---|
| Estrattore | Muxer | ||||
| H.263 | SÌ | SÌ |
• 3GPP (.3gp) • MPEG-4 (.mp4) • Matroska (.mkv) |
• 3GPP (.3gp) • MPEG-4 (.mp4) |
Il supporto di H.263 è facoltativo in Android 7.0 e versioni successive |
| H.264 AVC Profilo di baseline (BP) |
Android 3.0 e versioni successive | SÌ |
• 3GPP (.3gp) • MPEG-4 (.mp4) • MPEG-TS (.ts, solo audio AAC, non ricercabile, Android 3.0+) • Matroska (.mkv) |
• 3GPP (.3gp) • MPEG-4 (.mp4) |
|
| H.264 AVC Main Profile (MP) |
Android 6.0 e versioni successive | SÌ | Il decodificatore è obbligatorio, il codificatore è consigliato. | ||
| H.265 HEVC | Android 5.0+ |
• MPEG-4 (.mp4) • Matroska (.mkv) |
• MPEG-4 (.mp4) | Livello 3 del profilo principale per i dispositivi mobili e livello 4.1 del profilo principale per Android TV | |
| MPEG-4 SP | SÌ | • MPEG-4 (.mp4) | • MPEG-4 (.mp4) | ||
| VP8 | Android 4.3+ | Android 2.3.3 e versioni successive |
• WebM (.webm) • Matroska (.mkv, Android 4.0+) |
• WebM (.webm) | Riproducibile in streaming solo su Android 4.0 e versioni successive |
| 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) | A partire da Android 14, l'encoder e il decoder sono obbligatori. |
| APV | Android 16+ | Android 16+ | • MPEG-4 (.mp4) | • MPEG-4 (.mp4) | L'encoder e il decoder sono obbligatori a partire da Android 16. |
Consigli sulla codifica video
La tabella seguente elenca i profili e i parametri di codifica video del framework multimediale Android consigliati per la riproduzione utilizzando il codec H.264 Baseline Profile. Gli stessi consigli si applicano al codec Main Profile, disponibile solo in Android 6.0 e versioni successive.
| SD (bassa qualità) | SD (alta qualità) | HD 720p (N/A su tutti i dispositivi) | |
|---|---|---|---|
| Risoluzione video | 176 x 144 px | 480 x 360 px | 1280 x 720 px |
| Frequenza fotogrammi video | 12 f/s | 30 fps | 30 fps |
| Velocità in bit video | 56 Kbps | 500 Kbps | 2 Mbps |
| Codec audio | AAC-LC | AAC-LC | AAC-LC |
| Canali audio | 1 (mono) | 2 (stereo) | 2 (stereo) |
| Bitrate audio | 24 kbps | 128 kbps | 192 Kbps |
La tabella seguente elenca i profili e i parametri di codifica video del framework multimediale Android consigliati per la riproduzione utilizzando il codec multimediale VP8.
| SD (bassa qualità) | SD (alta qualità) | HD 720p (N/A su tutti i dispositivi) | HD 1080p (N/A su tutti i dispositivi) | |
|---|---|---|---|---|
| Risoluzione video | 320 x 180 px | 640 x 360 px | 1280 x 720 px | 1920 x 1080 px |
| Frequenza fotogrammi video | 30 fps | 30 fps | 30 fps | 30 fps |
| Velocità in bit video | 800 Kbps | 2 Mbps | 4 Mbps | 10 Mbps |
Consigli per la decodifica video
Le implementazioni dei dispositivi devono supportare il cambio dinamico della risoluzione e della frequenza fotogrammi video tramite le API Android standard all'interno dello stesso stream per tutti i codec VP8, VP9, H.264 e H.265 in tempo reale e fino alla risoluzione massima supportata da ciascun codec sul dispositivo.
Le implementazioni che supportano il decoder Dolby Vision devono seguire queste linee guida:
- Fornisci un estrattore compatibile con Dolby Vision.
- Visualizzare correttamente i contenuti Dolby Vision sullo schermo del dispositivo o su una porta di uscita video standard (ad es. HDMI).
- Imposta l'indice della traccia dei livelli base compatibili con le versioni precedenti (se presenti) in modo che sia uguale all'indice della traccia del livello Dolby Vision combinato.
Requisiti per lo streaming video
Per i contenuti video trasmessi in streaming tramite HTTP o RTSP, sono previsti requisiti aggiuntivi:
- Per i contenitori 3GPP e MPEG-4, l'atom
moovdeve precedere qualsiasi atommdat, ma deve seguire l'atomftyp. - Per i contenitori 3GPP, MPEG-4 e WebM, i campioni audio e video corrispondenti allo stesso offset temporale non possono differire di più di 500 KB. Per ridurre al minimo questo sfasamento audio/video, valuta la possibilità di alternare audio e video in blocchi più piccoli.
Supporto delle immagini
| Formato | Codificatore | Decodificatore | Dettagli | Tipi di file Formati contenitore |
|---|---|---|---|---|
| BMP | SÌ | BMP (.bmp) | ||
| GIF | SÌ | GIF (.gif) | ||
| JPEG | SÌ | SÌ | Base+progressive | JPEG (.jpg) |
| PNG | SÌ | SÌ | PNG (.png) | |
| WebP |
Android 4.0+ Senza perdita: Android 10+ Trasparenza: Android 4.2.1+ |
Android 4.0+ Senza perdita: Android 4.2.1+ Trasparenza: Android 4.2.1+ |
La codifica lossless può essere ottenuta su Android 10 utilizzando una qualità di 100. | WebP (.webp) |
| HEIF |
Android 10+ (tramite MediaCodec o HeifWriter; non in Bitmap.compress)
|
Android 9.0 o versioni successive | Dispositivo facoltativo. Consulta la pagina ImageDecoder.isMimeTypeSupported("image/heif") per informazioni sul supporto a 8 bit. La decodifica a 10 bit richiede il profilo HEVC Main10 facoltativo. |
HEIF (.heic; .heif) |
| AVIF (profilo di base) |
Android 14 o versioni successive (tramite MediaCodec; non in Bitmap.compress)
|
Android 12+ | La decodifica a 8 bit è supportata a partire da Android 12. La decodifica a 10 bit è facoltativa; controlla ImageDecoder.isMimeTypeSupported("image/avif") per il supporto a 10 bit (anche se false, la decodifica a 8 bit funziona comunque). |
AVIF (.avif) |
Protocolli di rete
Per la riproduzione audio e video sono supportati i seguenti protocolli di rete:
- RTSP (RTP, SDP)
- Streaming progressivo HTTP/HTTPS
- Bozza di protocollo per lo streaming live HTTP/HTTPS:
- Solo file multimediali MPEG-2 TS
- Versione 3 del protocollo Android 4.0 e versioni successive
- Protocol version 2 Android 3.x
- Non supportato prima di Android 3.0
Nota:HTTPS non è supportato prima di Android 3.1.
Formati video HDR
I produttori OEM possono attivare qualsiasi formato HDR scelgano con l'architettura HDR di Android, che fornisce le esigenze di base dei formati HDR: buffer a 10 bit, metadati (statici, dinamici e nessuno), funzione di trasferimento e gestione dello spazio colore.
Per garantire la coerenza per gli sviluppatori e risolvere i principali casi d'uso dell'HDR, richiediamo agli OEM di supportare alcuni formati di base sui dispositivi che supportano l'HDR:
- Per la riproduzione di contenuti professionali, come lo streaming di film, è necessario HDR10.
- Per l'acquisizione e la riproduzione di contenuti generati dagli utenti, richiediamo HLG10 per offrire un'esperienza coerente su tutti i dispositivi Android.
Gli OEM che aggiungono il supporto HDR devono supportare questi formati, ma possono supportare anche formati aggiuntivi come HDR10+ o Dolby Vision.
| Formato | Funzione di trasferimento | Metadati | Codec | Profondità di bit |
|---|---|---|---|---|
| HLG10 | HLG | No | HEVC | 10 bit |
| HDR10 | PQ | Statico | HEVC | 10 bit |
| HDR10+ | PQ | Statico | HEVC | 10 bit |
| Dolby Vision 8.4 | HLG | Dinamico | HEVC | 10 bit |
Suggerimenti per la gestione del formato
| Formato di acquisizione | Formato di caricamento | Formato di consegna |
| HLG | Supporto HDR HLG per il backend dell'app | Dispositivi che supportano l'HDR (HLG):
HLG I dispositivi supportano l'HDR (solo PQ, nessun supporto HLG): SDR (mappatura dei toni da HLG a SDR nel backend) Dispositivi che non supportano HDR: SDR (mappatura dei toni da HLG a SDR nel backend) |
Caso d'uso 2: acquisizione con la fotocamera nativa o importazione dalla galleria dell'utente (il backend dell'app supporta l'HDR)
| Formato di acquisizione | Formato di caricamento | Formato di consegna |
| HLG | HLG | Uguale al caso d'uso di acquisizione in-app |
| HDR10+ | HLG
Mappa dei toni da HDR10+ (PQ) a HLG prima del caricamento utilizzando le API Transformer |
Uguale al caso d'uso di acquisizione in-app |
| DV8.4 | HLG
(DV8.4 utilizza HLG e il bitstream si comporterà come HLG, quindi non è necessaria la mappatura tonale) |
Uguale al caso d'uso di acquisizione in-app |
Caso d'uso 3: il backend dell'app non supporta l'HDR
| Formato di acquisizione | Formato di caricamento | Formato di consegna |
| Qualsiasi formato | SDR
Mappa dei toni da HLG a SDR prima del caricamento utilizzando le API Transformer |
SDR |