Formati supportati:

Durante la definizione dei formati supportati da ExoPlayer, è importante notare che i "formati multimediali" sono definiti a più livelli. Dal livello più basso al più alto, questi sono:

  • Il formato dei singoli campioni multimediali (ad esempio un frame di video o un frame di audio). Ecco alcuni formati di esempio. Tieni presente che un tipico file video conterrà contenuti multimediali in almeno due formati di esempio: uno per i video (ad esempio H.264) e uno per l'audio (ad esempio, AAC).
  • Il formato del container che ospita gli esempi di contenuti multimediali e i metadati associati. Questi sono i formati contenitore. Un file multimediale ha un singolo formato container (ad esempio MP4), comunemente indicato dall'estensione del file. Tieni presente che per alcuni formati solo audio (ad esempio MP3), i formati di esempio e container potrebbero essere gli stessi.
  • Tecnologie di streaming adattivo come DASH, livestreaming e HLS. Non sono formati multimediali in quanto tali, tuttavia è comunque necessario definire il livello di supporto fornito da ExoPlayer.

Le seguenti sezioni definiscono il supporto di ExoPlayer a ogni livello, dal più alto al più basso. Le ultime due sezioni descrivono il supporto dei formati di sottotitoli autonomi e della riproduzione di video HDR.

Streaming adattivo

DASH

ExoPlayer supporta DASH con diversi formati di contenitore. Gli stream multimediali devono essere deduplicati, ovvero video, audio e testo devono essere definiti in elementi AdaptationSet distinti nel manifest DASH (il CEA-608 è un'eccezione, come descritto nella tabella seguente). Devono essere supportati anche i formati di esempio audio e video contenuti (per informazioni dettagliate, consulta la sezione Formati di esempio).

Funzionalità Prove di supporto Commenti
Container
FMP4 Solo stream eliminati
WebM Solo stream eliminati
Matroska Solo stream eliminati
MPEG-TS NO Nessuna assistenza pianificata
Sottotitoli codificati/sottotitoli
TTML Non elaborato o incorporato in FMP4 secondo ISO/IEC 14496-30
WebVTT Non elaborato o incorporato in FMP4 secondo ISO/IEC 14496-30
CEA-608 Incorporato in FMP4 quando segnalato tramite descrittori di accessibilità SCTE
CEA-708 Incorporato in FMP4 quando segnalato tramite descrittori di accessibilità SCTE
Metadati
Metadati EMSG Incorporata in FMP4
Protezione dei contenuti
Widevine Schema "cenc": API 19+; schema "cbcs": API 25+
PlayReady SL2000 Android TV, solo schema "cenc"
Cancella API 21+, solo schema "cenc"
Riproduzione dal vivo
Riproduzione regolare dal vivo
Riproduzione dal vivo con CMAF a latenza molto bassa
Dati Common Media Client (CMCD) Guida all'integrazione

Streaming fluido

ExoPlayer supporta lo streaming fluido con il formato contenitore FMP4. Gli stream multimediali devono essere rimossi, il che significa che video, audio e testo devono essere definiti in elementi StreamIndex distinti nel file manifest LiveStreaming. Devono essere supportati anche i formati di esempio audio e video contenuti (per informazioni dettagliate, consulta la sezione sui formati di esempio).

Funzionalità Prove di supporto Commenti
Container
FMP4 Solo stream eliminati
Sottotitoli codificati/sottotitoli
TTML Incorporata in FMP4
Protezione dei contenuti
PlayReady SL2000 Solo Android TV
Riproduzione dal vivo
Riproduzione regolare dal vivo
Dati Common Media Client (CMCD) Guida all'integrazione

HLS

ExoPlayer supporta HLS con più formati di container. Devono essere supportati anche i formati di esempio audio e video contenuti (per informazioni dettagliate, consulta la sezione sui formati di esempio). Incoraggiamo vivamente i produttori di contenuti HLS a generare stream HLS di alta qualità, come descritto qui.

Funzionalità Prove di supporto Commenti
Container
MPEG-TS
FMP4/CMAF
ADTS (AAC)
MP3
Sottotitoli codificati/sottotitoli
CEA-608
CEA-708
WebVTT
Metadati
ID3
SCTE-35 NO
Protezione dei contenuti
AES-128
Esempio di AES-128 NO
Widevine API 19+ (schema "cenc") e 25+ ("schema cbcs")
PlayReady SL2000 Solo Android TV
Controllo server
Aggiornamenti delta
Blocco del ricaricamento della playlist in corso...
Blocco del carico di suggerimenti di precaricamento Tranne per gli intervalli di byte con lunghezze non definite
Riproduzione dal vivo
Riproduzione regolare dal vivo
HLS a bassa latenza (Apple)
HLS a bassa latenza (community) NO
Dati Common Media Client (CMCD) Guida all'integrazione

Formati container progressivi

Gli stream nei seguenti formati container possono essere riprodotti direttamente da ExoPlayer. Devono essere supportati anche i formati di esempio audio e video contenuti (per informazioni dettagliate, consulta la sezione Formati di esempio).

Formato container Prove di supporto Commenti
MP4
M4
FMP4
WebM
Matroska
MP3 Alcuni stream sono ricercabili solo utilizzando la ricerca a velocità in bit costante**
Ogg Contiene Vorbis, Opus e FLAC
WAV
MPEG-TS
MPEG-PS
FLV Impossibile cercare*
ADTS (AAC) Ricercabile solo con la ricerca a velocità in bit costante**
FLAC Utilizzando la libreria FLAC o l'estrattore FLAC nella libreria ExoPlayer***
AMR Ricercabile solo con la ricerca a velocità in bit costante**
Foto in movimento JPEG Vengono estratti solo i contenuti MP4

* La ricerca non è supportata perché il container non fornisce metadati (ad esempio, un indice di esempio) per consentire a un media player di eseguire una ricerca in modo efficiente. Se la ricerca è obbligatoria, ti consigliamo di utilizzare un formato contenitore più appropriato.

** Questi estrattori hanno flag FLAG_ENABLE_CONSTANT_BITRATE_SEEKING per consentire la ricerca approssimativa utilizzando un'ipotesi di velocità in bit costante. Questa funzionalità non è abilitata per impostazione predefinita. Il modo più semplice per abilitare questa funzionalità per tutti gli estrattori che la supportano è utilizzare DefaultExtractorsFactory.setConstantBitrateSeekingEnabled, come descritto qui.

*** L'estrattore della libreria FLAC produce audio non elaborato, che può essere gestito dal framework a tutti i livelli API. L'estrattore FLAC della libreria ExoPlayer genera frame audio FLAC, pertanto si basa sull'utilizzo di un decodificatore FLAC (ad esempio, un decodificatore MediaCodec che gestisce FLAC (richiesto dal livello API 27) o la libreria FFmpeg con FLAC abilitato). DefaultExtractorsFactory utilizza l'estrattore di estensioni se l'applicazione è stata creata con la libreria FLAC. In caso contrario, utilizza l'estrattore libreria ExoPlayer.

RTSP

ExoPlayer supporta RTSP sia in diretta sia on demand. I formati di esempio e i tipi di rete supportati sono elencati di seguito.

Formati di esempio supportati

  • H264 (la descrizione del supporto SDP deve includere dati SPS/PPS nell'attributo fmtp per l'inizializzazione del decoder).
  • AAC (con ADTS bitstream).
  • AC3.

Tipi di rete supportati

  • RTP su unicast UDP (il multicast non è supportato).
  • RTSP con interleaving, RTP su RTSP tramite TCP.

Formati di esempio

Per impostazione predefinita ExoPlayer utilizza i decoder della piattaforma di Android. Pertanto, i formati di esempio supportati dipendono dalla piattaforma sottostante anziché da ExoPlayer. Consulta Formati multimediali supportati per la documentazione sui formati di esempio supportati dai dispositivi Android. Tieni presente che i singoli dispositivi potrebbero supportare formati aggiuntivi oltre a quelli elencati.

Oltre ai decoder della piattaforma Android, ExoPlayer può anche utilizzare estensioni di decodifica software. Queste devono essere create manualmente e incluse nei progetti che vogliono usarle. Al momento forniamo librerie di decoder software per AV1, VP9, FLAC, Opus e FFmpeg.

Libreria FFmpeg

La libreria FFmpeg supporta la decodifica di una varietà di formati di esempio audio diversi. Puoi scegliere quali decodificatori includere durante la creazione della libreria, come documentato nel file README.md della libreria. La seguente tabella fornisce una mappatura dal formato audio di esempio al nome del decoder FFmpeg corrispondente.

Formato di esempio Nomi dei decoder
Vorbis Vorbis
Opus opus
FLAC flacone
ALAC alac
Legge μ PCM pcm_mulaw
Legge per il non profit PCM Pcm_alaw
MP1, MP2, MP3. mp3
AMR-NB Amrnb
AMR-WB Amrwb
AAC aac
CA-3 AC3
E-AC-3 Eac3
DTS e DTS-HD dca
TrueHD MLP truehd

Formati di sottotitoli autonomi

ExoPlayer supporta file di sottotitoli autonomi in diversi formati. I file dei sottotitoli possono essere caricati tramite sideload come descritto nella pagina degli elementi multimediali.

Formato container Prove di supporto Tipo MIME
WebVTT MimeTypes.TEXT_VTT
TTML / SMPTE-TT MimeTypes.APPLICATION_TTML
SubRip MimeTypes.APPLICATION_SUBRIP
SubStationAlpha (SSA/ASS) MimeTypes.TEXT_SSA

Riproduzione di video HDR

ExoPlayer gestisce l'estrazione di video HDR (High Dynamic Range) in vari container, tra cui Dolby Vision in MP4 e HDR10+ in Matroska/WebM. La decodifica e la visualizzazione di contenuti HDR dipendono dal supporto della piattaforma Android e del dispositivo. Consulta la sezione Riproduzione video HDR per informazioni su come verificare le funzionalità di decodifica/visualizzazione HDR e le limitazioni del supporto HDR nelle versioni Android.

Durante la riproduzione di uno stream HDR che richiede il supporto di un determinato profilo codec, il selettore MediaCodec predefinito di ExoPlayer sceglie un decodificatore che supporta quel profilo (se disponibile), anche se un altro decodificatore per lo stesso tipo MIME che non supporta quel profilo viene visualizzato più in alto nell'elenco dei codec. Ciò può comportare la selezione di un decodificatore software nei casi in cui il flusso superi le funzionalità di un decodificatore hardware per lo stesso tipo MIME.