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 | SÌ | Solo stream demuxati |
WebM | SÌ | Solo stream demuxati |
Matroska | SÌ | Solo stream demuxati |
MPEG-TS | NO | Nessun supporto pianificato |
Sottotitoli codificati | ||
TCF | SÌ | Grezzo o incorporato in FMP4 secondo lo standard ISO/IEC 14496-30 |
WebVTT | SÌ | Grezzo o incorporato in FMP4 secondo lo standard ISO/IEC 14496-30 |
CEA-608 | SÌ | Incorporato in FMP4 quando segnalato tramite i descrittori di accessibilità SCTE |
CEA-708 | SÌ | Incorporato in FMP4 quando segnalato tramite i descrittori di accessibilità SCTE |
Metadati | ||
Metadati EMSG | SÌ | Incorporato in FMP4 |
Protezione dei contenuti | ||
Widevine | SÌ | "cenc" schema: API 19+; "cbcs" schema: API 25+ |
PlayReady SL2000 | SÌ | Android TV, "cenc" solo schema |
Cancella chiave | SÌ | API 21+, "cenc" solo schema |
Riproduzione in diretta | ||
Riproduzione regolare dal vivo | SÌ | |
Riproduzione dal vivo CMAF a latenza molto bassa | SÌ | |
Dati Common Media Client Client (CMCD) | SÌ | 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 | SÌ | Solo stream demuxati |
Sottotitoli codificati | ||
TCF | SÌ | Incorporato in FMP4 |
Protezione dei contenuti | ||
PlayReady SL2000 | SÌ | Solo Android TV |
Riproduzione in diretta | ||
Riproduzione regolare dal vivo | SÌ | |
Dati Common Media Client Client (CMCD) | SÌ | 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 | SÌ | |
FMP4/CMAF | SÌ | |
ADTS (AAC) | SÌ | |
MP3 | SÌ | |
Sottotitoli codificati | ||
CEA-608 | SÌ | |
CEA-708 | SÌ | |
WebVTT | SÌ | |
Metadati | ||
ID3 | SÌ | |
SCTE-35 | NO | |
Protezione dei contenuti | ||
AES-128 | SÌ | |
AES-128 di esempio | NO | |
Widevine | SÌ | API 19+ (schema "cenc") e 25+ (schema "cbcs") |
PlayReady SL2000 | SÌ | Solo Android TV |
Controllo server | ||
Aggiornamenti Delta | SÌ | |
Blocco del ricaricamento della playlist | SÌ | |
Blocco del carico dei suggerimenti di precaricamento | SÌ | Fatta eccezione per gli intervalli di byte con lunghezze non definite |
Riproduzione in diretta | ||
Riproduzione regolare dal vivo | SÌ | |
HLS a bassa latenza (Apple) | SÌ | |
HLS a bassa latenza (community) | NO | |
Dati Common Media Client Client (CMCD) | SÌ | 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 | SÌ | |
M4A | SÌ | |
FMP4 | SÌ | |
WebM | SÌ | |
Matroska | SÌ | |
MP3 | SÌ | Per alcuni stream è possibile cercare solo la velocità in bit costante** |
Ogg | SÌ | Contiene Vorbis, Opus e FLAC |
WAV | SÌ | |
MPEG-TS | SÌ | |
MPEG-PS | SÌ | |
FLV | SÌ | Nessuna ricerca* |
ADTS (AAC) | SÌ | Ricercabile solo con ricerca con velocità in bit costante** |
FLAC | SÌ | Utilizzando la libreria FLAC o l'estrattore FLAC nella libreria ExoPlayer*** |
Retrospettiva | SÌ | 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.
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 | SÌ | |
GIF | NO | Nessun supporto per estrattori |
JPEG | SÌ | |
Foto in movimento JPEG | SÌ | Immagini e video fisse supportati |
Ultra HDR JPEG | SÌ | Torna a SDR prima di Android 14 o versioni successive display non HDR |
PNG | SÌ | |
WebP | SÌ | |
HEIF/HEIC | SÌ | |
Foto in movimento HEIC | In parte | Sono supportate solo immagini statiche* |
AVIF (base di riferimento) | SÌ | 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 | SÌ | MimeTypes.TEXT_VTT |
WebRTCL / SMPTE-TT | SÌ | MimeTypes.APPLICATION_TTML |
SubRip | SÌ | MimeTypes.APPLICATION_SUBRIP |
SubStationAlpha (SSA/ASS) | SÌ | 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.