ExoPlayer peut lire directement les flux dans les formats de conteneur suivants. Les formats des exemples audio et vidéo contenus doivent également être compatibles (pour en savoir plus, consultez la section Formats des exemples). Pour en savoir plus sur les conteneurs et les formats d'images compatibles, consultez Images.
| Format du conteneur | Compatible | Commentaires |
|---|---|---|
| MP4 | OUI | |
| M4A | OUI | |
| FMP4 | OUI | |
| WebM | OUI | |
| Matroska | OUI | |
| MP3 | OUI | Certains flux ne sont accessibles qu'avec la recherche à débit constant** |
| Ogg | OUI | Contenant Vorbis, Opus et FLAC |
| WAV | OUI | |
| MPEG-TS | OUI | |
| MPEG-PS | OUI | |
| FLV | OUI | Non disponible pour la recherche* |
| ADTS (AAC) | OUI | Recherche possible uniquement avec une recherche à débit constant** |
| FLAC | OUI | Utiliser la bibliothèque FLAC ou l'extracteur FLAC dans la bibliothèque ExoPlayer*** |
| AMR | OUI | Recherche possible uniquement avec une recherche à débit constant** |
* La recherche n'est pas prise en charge, car le conteneur ne fournit pas de métadonnées (par exemple, un index d'échantillons) permettant à un lecteur multimédia d'effectuer une recherche de manière efficace. Si la recherche est requise, nous vous suggérons d'utiliser un format de conteneur plus approprié.
** Ces extracteurs comportent des indicateurs FLAG_ENABLE_CONSTANT_BITRATE_SEEKING permettant d'activer la recherche approximative en utilisant une hypothèse de débit constant. Cette fonctionnalité n'est pas activée par défaut. Le moyen le plus simple d'activer cette fonctionnalité pour tous les extracteurs qui la prennent en charge consiste à utiliser DefaultExtractorsFactory.setConstantBitrateSeekingEnabled, comme décrit ici.
*** L'extracteur de bibliothèque FLAC génère un fichier audio brut, qui peut être géré par le framework à tous les niveaux d'API. L'extracteur FLAC de la bibliothèque ExoPlayer génère des trames audio FLAC et repose donc sur un décodeur FLAC (par exemple, un décodeur MediaCodec qui gère le format FLAC (requis à partir du niveau d'API 27) ou la bibliothèque FFmpeg avec le format FLAC activé). DefaultExtractorsFactory utilise l'extracteur d'extension si l'application a été créée avec la bibliothèque FLAC.
Sinon, il utilise l'extracteur de la bibliothèque ExoPlayer.
Utiliser MediaItem
Pour lire un flux progressif, créez un MediaItem avec l'URI du contenu multimédia et transmettez-le 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 obtenir davantage 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 permet de personnaliser l'expérience de lecture de plusieurs façons en fonction des besoins de votre application. Pour obtenir des exemples, consultez la page de personnalisation.