Formati multimediali supportati

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)
• MPEG-4 (.mp4, .m4a)
• ADTS raw AAC (.aac, ADIF not supported)
• MPEG-TS (.ts, not seekable, Android 3.0+)
• 3GPP (.3gp)
• MPEG-4 (.mp4, .m4a)
• 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 moov deve precedere qualsiasi atom mdat, ma deve seguire l'atom ftyp.
  • 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