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 (pour en savoir plus, consultez la section Exemples de formats).
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 à débit constant**. |
Ogg | OUI | Contenant vorbis, Opus et FLAC |
WAV | OUI | |
MPEG-TS | OUI | |
MPEG-PS | OUI | |
FLV | OUI | Recherche impossible* |
ADTS (AAC) | OUI | Recherche possible uniquement à l'aide de la recherche à débit constant** |
FLAC | OUI | Utilisation de la bibliothèque FLAC ou de l'extracteur FLAC de la bibliothèque ExoPlayer*** |
AMR | OUI | Recherche possible uniquement à l'aide de la recherche à débit constant** |
Photo animée JPEG | OUI | Seul le contenu MP4 est extrait |
* 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 efficace. Si une recherche est nécessaire, nous vous suggérons d'utiliser un format de conteneur plus approprié.
** Ces extracteurs disposent d'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 compatibles consiste à utiliser DefaultExtractorsFactory.setConstantBitrateSeekingEnabled
, comme décrit ici.
*** L'extracteur de la bibliothèque FLAC produit du contenu 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 FLAC (requis à partir du niveau d'API 27) ou la bibliothèque FFmpeg avec 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 mé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 plus d'options de personnalisation, vous pouvez créer un ProgressiveMediaSource
et directement dans le 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 propose plusieurs façons d'adapter l'expérience de lecture aux besoins de votre application. Consultez la page Personnalisation pour voir des exemples.