Progressif

Les flux dans les formats de conteneur suivants peuvent être lus directement par ExoPlayer. Les formats d'échantillons audio et vidéo contenus doivent également être compatibles (consultez les Exemples de formats. Pour connaître la compatibilité avec les conteneurs d'images et les formats, consultez Images :

Format du conteneur Autorisé Commentaires
MP4 OUI
M4A OUI
FMP4 OUI
WebM OUI
Matroska OUI
MP3 OUI Certains flux ne peuvent être recherchés qu'à l'aide de la recherche de débit constant**
Ogg OUI Contient Vorbis, Opus et FLAC
WAV OUI
MPEG-TS OUI
MPEG-PS OUI
FLV OUI Recherche impossible*
ADTS (AAC) OUI Recherche uniquement possible en utilisant la recherche de débit constant**
FLAC OUI Utilisation de la bibliothèque FLAC ou de l'extracteur FLAC dans la bibliothèque ExoPlayer***
AMR OUI Recherche uniquement possible en utilisant la recherche de débit constant**

* La recherche n'est pas acceptée, car le conteneur ne fournit pas de métadonnées (par exemple, un exemple d'index) pour permettre à un lecteur multimédia d'effectuer une recherche de manière efficace. Si la recherche est nécessaire, nous vous suggérons d'utiliser un format de conteneur plus approprié.

** Ces extracteurs ont des indicateurs FLAG_ENABLE_CONSTANT_BITRATE_SEEKING pour la recherche approximative en utilisant une hypothèse de débit constant. Ce n'est pas activée par défaut. Le moyen le plus simple d'activer pour tous les extracteurs compatibles consiste à utiliser DefaultExtractorsFactory.setConstantBitrateSeekingEnabled, tel que décrit cliquez ici.

*** L'extracteur de la bibliothèque FLAC génère du contenu audio brut, qui peut être traité. par le framework à tous les niveaux d'API. Sortie de l'extracteur FLAC de la bibliothèque ExoPlayer Trames audio FLAC, ce qui implique d'avoir un décodeur FLAC (par exemple, un MediaCodec qui gère le format FLAC (requis pour le niveau d'API 27) ou bibliothèque FFmpeg avec FLAC activé). DefaultExtractorsFactory utilise le d'extension si l'application a été créée avec la bibliothèque FLAC. Sinon, il utilise l'extracteur de la bibliothèque ExoPlayer.

Utilisation de MediaItem

Pour lire un flux progressif, créez un MediaItem avec l'URI du média et transmettez au lecteur.

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();

Utiliser ProgressiveMediaSource

Pour plus d'options de personnalisation, vous pouvez créer un ProgressiveMediaSource et le transmettre directement au lecteur au lieu d'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();

Personnaliser la lecture

ExoPlayer vous propose plusieurs façons d'adapter l'expérience de lecture à votre besoins de votre application. Consultez la page Personnalisation pour obtenir des exemples.