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.
Utilizzo di MediaItem
Per riprodurre uno stream progressivo, crea un elemento MediaItem
con l'URI multimediale e passa
al player.
Kotlin
// Create a player instance. val player = ExoPlayer.Builder(context).build() // Set the media item to be played. player.setMediaItem(MediaItem.fromUri(progressiveUri)) // Prepare the player. player.prepare()
Java
// Create a player instance. ExoPlayer player = new ExoPlayer.Builder(context).build(); // Set the media item to be played. player.setMediaItem(MediaItem.fromUri(progressiveUri)); // Prepare the player. player.prepare();
Utilizzo di ProgressionMediaSource
Per ulteriori opzioni di personalizzazione, puoi creare un ProgressiveMediaSource
e
passalo direttamente al giocatore invece che a MediaItem
.
Kotlin
// Create a data source factory. val dataSourceFactory: DataSource.Factory = DefaultHttpDataSource.Factory() // Create a progressive media source pointing to a stream uri. val mediaSource: MediaSource = ProgressiveMediaSource.Factory(dataSourceFactory) .createMediaSource(MediaItem.fromUri(progressiveUri)) // Create a player instance. val player = ExoPlayer.Builder(context).build() // Set the media source to be played. player.setMediaSource(mediaSource) // Prepare the player. player.prepare()
Java
// Create a data source factory. DataSource.Factory dataSourceFactory = new DefaultHttpDataSource.Factory(); // Create a progressive media source pointing to a stream uri. MediaSource mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory) .createMediaSource(MediaItem.fromUri(progressiveUri)); // Create a player instance. ExoPlayer player = new ExoPlayer.Builder(context).build(); // Set the media source to be played. player.setMediaSource(mediaSource); // Prepare the player. player.prepare();
Personalizzazione della riproduzione
ExoPlayer offre diversi modi per personalizzare l'esperienza di riproduzione in base al tuo per soddisfare le esigenze dell'app. Consulta la pagina Personalizzazione per alcuni esempi.