Formati supportati:

Quando definisci i formati supportati da ExoPlayer, è importante notare che "formati multimediali" sono definiti a più livelli. Dal livello più basso al più elevate, sono:

  • Il formato dei singoli campioni multimediali (ad esempio un fotogramma del video o un fotogramma di audio). Questi sono i formati di esempio. Tieni presente che un tipico file video contenere elementi multimediali in almeno due formati di esempio; una per video (ad esempio, H.264) e una per l'audio (ad esempio, AAC).
  • Il formato del container che ospita i campioni multimediali e i valori associati metadati. Si tratta di formati container. Un file multimediale ha un singolo contenitore (ad es. MP4), comunemente indicato con l'estensione del file. Nota che per alcuni formati solo audio (ad esempio MP3) potrebbe essere lo stesso.
  • Tecnologie di streaming adattivi come DASH, smoothStreaming e HLS. Questi non sono formati multimediali in quanto tali, è comunque necessario definire livello di supporto offerto da ExoPlayer.

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

Streaming adattivo

PANORAMICA

ExoPlayer supporta DASH con più formati di contenitori. Gli stream multimediali devono essere demuxed, il che significa che video, audio e testo devono essere definiti Elementi AdaptationSet nel manifest DASH (CEA-608 è un'eccezione perché descritti nella seguente tabella). I formati di esempio audio e video contenuti devono essere supportati (vedi formati di esempio per maggiori dettagli).

Funzionalità Supportato Commenti
Container
FMP4 Solo stream demuxati
WebM Solo stream demuxati
Matroska Solo stream demuxati
MPEG-TS NO Nessun supporto pianificato
Sottotitoli codificati
TCF Grezzo o incorporato in FMP4 secondo lo standard ISO/IEC 14496-30
WebVTT Grezzo o incorporato in FMP4 secondo lo standard ISO/IEC 14496-30
CEA-608 Incorporato in FMP4 quando segnalato tramite i descrittori di accessibilità SCTE
CEA-708 Incorporato in FMP4 quando segnalato tramite i descrittori di accessibilità SCTE
Metadati
Metadati EMSG Incorporato in FMP4
Protezione dei contenuti
Widevine "cenc" schema: API 19+; "cbcs" schema: API 25+
PlayReady SL2000 Android TV, "cenc" solo schema
Cancella chiave API 21+, "cenc" solo schema
Riproduzione in diretta
Riproduzione regolare dal vivo
Riproduzione dal vivo CMAF a latenza molto bassa
Dati Common Media Client Client (CMCD) Guida all'integrazione

Streaming fluido

ExoPlayer supporta smoothStreaming con il formato container FMP4. Stream multimediali devono essere decompressi, il che significa che video, audio e testo devono essere Elementi StreamIndex nel manifest SmoothStreaming. L'audio contenuto e devono essere supportati anche i formati video di esempio (consulta formati di esempio per maggiori dettagli).

Funzionalità Supportato Commenti
Container
FMP4 Solo stream demuxati
Sottotitoli codificati
TCF Incorporato in FMP4
Protezione dei contenuti
PlayReady SL2000 Solo Android TV
Riproduzione in diretta
Riproduzione regolare dal vivo
Dati Common Media Client Client (CMCD) Guida all'integrazione

HLS

ExoPlayer supporta HLS con più formati di container. L'audio contenuto e devono essere supportati anche i formati video di esempio (consulta formati di esempio per maggiori dettagli). Me Consigliamo vivamente ai produttori di contenuti HLS di generare stream HLS di alta qualità, come descritto qui

Funzionalità Supportato Commenti
Container
MPEG-TS
FMP4/CMAF
ADTS (AAC)
MP3
Sottotitoli codificati
CEA-608
CEA-708
WebVTT
Metadati
ID3
SCTE-35 NO
Protezione dei contenuti
AES-128
AES-128 di esempio NO
Widevine API 19+ (schema "cenc") e 25+ (schema "cbcs")
PlayReady SL2000 Solo Android TV
Controllo server
Aggiornamenti Delta
Blocco del ricaricamento della playlist
Blocco del carico dei suggerimenti di precaricamento Fatta eccezione per gli intervalli di byte con lunghezze non definite
Riproduzione in diretta
Riproduzione regolare dal vivo
HLS a bassa latenza (Apple)
HLS a bassa latenza (community) NO
Dati Common Media Client 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 audio e video di esempio (consulta il Formati di esempio per maggiori dettagli). Per il supporto di formati e contenitori di immagini, consulta Immagini.

Formato container Supportato Commenti
MP4
M4A
FMP4
WebM
Matroska
MP3 Per alcuni stream è possibile cercare solo la velocità in bit costante**
Ogg Contiene Vorbis, Opus e FLAC
WAV
MPEG-TS
MPEG-PS
FLV Nessuna ricerca*
ADTS (AAC) Ricercabile solo con ricerca con velocità in bit costante**
FLAC Utilizzando la libreria FLAC o l'estrattore FLAC nella libreria ExoPlayer***
Retrospettiva Ricercabile solo con ricerca con velocità in bit costante**

* 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 è necessaria la ricerca, ti suggeriamo di utilizzare un formato contenitore più appropriato.

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

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

RTSP

ExoPlayer supporta RTSP sia dal vivo che on demand. Formati di esempio supportati e di rete sono elencati di seguito.

Formati di esempio supportati

  • H264 (la descrizione dei contenuti multimediali SDP deve includere i dati SPS/PPS nell'fmtp per l'inizializzazione del decoder).
  • AAC (con flusso di bit ADTS).
  • AC3.
di Gemini Advanced.

Tipi di rete supportati

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

Formati di esempio

Per impostazione predefinita, ExoPlayer utilizza i decoder della piattaforma Android. Pertanto, i modelli formati di esempio dipendono dalla piattaforma sottostante anziché da ExoPlayer. Consulta Formati multimediali supportati per 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ò utilizzare anche encoder-decoder. Devono essere creati manualmente e inclusi ai progetti che vogliono farne uso. Attualmente forniamo un decoder software librerie per AV1 VP9 FLAC Opus, e FFmpeg.

libreria FFmpeg

La libreria FFmpeg supporta decodificare vari formati di campioni audio. Puoi scegliere quali da includere nella creazione della libreria, come documentato README.md della libreria. La la seguente tabella fornisce una mappatura dal formato di esempio audio al corrispondente Nome del decoder FFmpeg.

Formato di esempio Nomi dei decodificatori
Vorbis Vorbis
Opus opera
FLAC Flac
ALAC alac
μ-legge PCM pcm_mulaw
Legge PCM A PCM_alaw
MP1, MP2, MP3 mp3
AMR-NB Amrnb
AMR-WB Amrwb
AAC aac
AC-3 ac3
E-AC-3 eac3
DTS, DTS-HD DCA
TrueHD truehd mlp

Immagini

ExoPlayer supporta i seguenti formati di immagine. Consulta Librerie per il caricamento delle immagini su come eseguire l'integrazione con librerie esterne che potrebbero fornire supporto per diversi set di formati.

Formato dell'immagine Supportato Note
BMP
GIF NO Nessun supporto per estrattori
JPEG
Foto in movimento JPEG Immagini e video fisse supportati
Ultra HDR JPEG Torna a SDR prima di Android 14 o versioni successive display non HDR
PNG
WebP
HEIF/HEIC
Foto in movimento HEIC In parte Sono supportate solo immagini statiche*
AVIF (base di riferimento) Decodificata solo su Android 14 e versioni successive

* La parte video delle foto in movimento HEIC può essere ottenuta con MetadataRetriever e riprodotti come file autonomo.

Formati dei sottotitoli indipendenti

ExoPlayer supporta file di sottotitoli indipendenti in diversi formati. Sottotitolo possono essere trasferiti tramite sideload come descritto nella pagina degli elementi multimediali.

Formato container Supportato Tipo MIME
WebVTT MimeTypes.TEXT_VTT
WebRTCL / SMPTE-TT MimeTypes.APPLICATION_TTML
SubRip MimeTypes.APPLICATION_SUBRIP
SubStationAlpha (SSA/ASS) MimeTypes.TEXT_SSA

Riproduzione di video HDR

ExoPlayer gestisce l'estrazione del video HDR (High Dynamic Range) in diverse containerizzati, tra cui Dolby Vision in MP4 e HDR10+ in Matroska/WebM. Decodifica e la visualizzazione dei contenuti HDR dipende dal supporto della piattaforma Android. dispositivo. Consulta Riproduzione video HDR per maggiori informazioni sul controllo delle funzionalità di decodifica/visualizzazione HDR e dei relativi limiti Supporto HDR su tutte le versioni di Android.

Quando riproduci uno stream HDR che richiede il supporto di un determinato profilo codec, Il selettore MediaCodec predefinito di ExoPlayer sceglierà un decodificatore che supporta questo standard (se disponibile), anche se un altro decoder per lo stesso tipo MIME non supporta la visualizzazione del profilo più in alto nell'elenco dei codec. Ciò può comportare nella selezione di un decoder software nei casi in cui il flusso supera di un decodificatore hardware per lo stesso tipo MIME.