Gli stream nei seguenti formati contenitore possono essere riprodotti direttamente da ExoPlayer. Anche i formati dei campioni audio e video contenuti devono essere supportati (per i dettagli, consulta la sezione Formati dei campioni). Per informazioni sul supporto di contenitori e formati di immagini, consulta Immagini.
| Formato del contenitore | Supportato | Commenti |
|---|---|---|
| MP4 | SÌ | |
| M4A | SÌ | |
| FMP4 | SÌ | |
| WebM | SÌ | |
| Matroska | SÌ | |
| MP3 | SÌ | Alcuni stream sono ricercabili solo utilizzando la ricerca a bitrate costante** |
| Ogg | SÌ | Contenente Vorbis, Opus e FLAC |
| WAV | SÌ | |
| MPEG-TS | SÌ | |
| MPEG-PS | SÌ | |
| FLV | SÌ | Non riproducibile* |
| ADTS (AAC) | SÌ | Ricercabile solo tramite ricerca a bitrate costante** |
| FLAC | SÌ | Utilizzo della libreria FLAC o dell'estrattore FLAC nella libreria ExoPlayer*** |
| AMR | SÌ | Ricercabile solo tramite ricerca a bitrate costante** |
* La ricerca non è supportata perché il contenitore non fornisce metadati (ad esempio, un indice di esempio) per consentire a un lettore multimediale di eseguire una ricerca in modo efficiente. Se è necessaria la ricerca, ti consigliamo di utilizzare un formato contenitore più appropriato.
** Questi estrattori hanno flag FLAG_ENABLE_CONSTANT_BITRATE_SEEKING per
l'attivazione della ricerca approssimativa utilizzando un'ipotesi di bitrate costante. Questa
funzionalità non è attivata per impostazione predefinita. Il modo più semplice per attivare questa funzionalità per tutti gli estrattori che la supportano è utilizzare DefaultExtractorsFactory.setConstantBitrateSeekingEnabled, come descritto qui.
*** L'estrattore della libreria FLAC restituisce l'audio non elaborato, che può essere gestito
dal framework a tutti i livelli API. L'estrattore FLAC della libreria ExoPlayer genera
frame audio FLAC e si basa quindi su un decoder FLAC (ad esempio, un decoder MediaCodec
che gestisce FLAC (obbligatorio 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 della libreria ExoPlayer.
Utilizzo di MediaItem
Per riprodurre uno stream progressivo, crea un MediaItem con l'URI dei contenuti multimediali e passalo al lettore.
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 ProgressiveMediaSource
Per ulteriori opzioni di personalizzazione, puoi creare un ProgressiveMediaSource e
passarlo direttamente al player anziché un 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();
Personalizzare la riproduzione
ExoPlayer offre diversi modi per personalizzare l'esperienza di riproduzione in base alle esigenze della tua app. Per esempi, consulta la pagina Personalizzazione.