Pour les cas d'utilisation simples, la prise en main de ExoPlayer
consiste à implémenter
procédez comme suit:
- Ajoutez ExoPlayer en tant que dépendance à votre projet.
- Créez une instance
ExoPlayer
. - Associez le lecteur à une vue (pour la sortie vidéo et l'entrée utilisateur).
- Préparez le joueur avec un
MediaItem
pour jouer. - Relâchez le lecteur lorsque vous avez terminé.
Ces étapes sont décrites plus en détail ci-dessous. Pour obtenir un exemple complet, consultez
PlayerActivity
dans l'application de démonstration principale
Ajouter ExoPlayer comme dépendance
Ajouter des modules ExoPlayer
Pour commencer à utiliser AndroidX Media3, le plus simple est d'ajouter Gradle.
dépendances des bibliothèques dont vous avez besoin dans le fichier build.gradle
de votre application
de ce module.
Par exemple, utiliser ExoPlayer avec prise en charge de la lecture DASH et composants d'interface utilisateur vous pouvez ajouter des dépendances aux modules comme ceci:
Kotlin
implementation("androidx.media3:media3-exoplayer:1.4.1") implementation("androidx.media3:media3-exoplayer-dash:1.4.1") implementation("androidx.media3:media3-ui:1.4.1")
Groovy
implementation "androidx.media3:media3-exoplayer:1.4.1" implementation "androidx.media3:media3-exoplayer-dash:1.4.1" implementation "androidx.media3:media3-ui:1.4.1"
où 1.4.1 est votre version préférée (la dernière version est disponible dans consultez les notes de version). Tous les modules doivent avoir la même version.
AndroidX Media3 dispose de modules de bibliothèque qui dépendent de bibliothèques externes pour fournir des fonctionnalités supplémentaires. Certaines sont disponibles dans le dépôt Maven, tandis que les autres doivent être créées manuellement. Parcourez le répertoire des bibliothèques et consultez les fichiers README individuels pour en savoir plus.
Pour en savoir plus sur les modules de bibliothèque disponibles, consultez le Page multimédia Google Maven pour AndroidX :
Activer la compatibilité avec Java 8
Si ce n'est pas déjà fait, vous devez activer la compatibilité avec Java 8 dans tous les build.gradle
qui dépendent d'ExoPlayer, en ajoutant les éléments suivants à la section android
:
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
}
Activer multidex
Si la version minSdkVersion
de Gradle est inférieure ou égale à 20, vous devez
activez multidex dans l'ordre
pour éviter les erreurs de compilation.
Créer le lecteur
Vous pouvez créer une instance ExoPlayer
à l'aide de ExoPlayer.Builder
, qui fournit
un large éventail d'options de personnalisation. Le code suivant est l'exemple le plus simple
créer une instance.
Kotlin
val player = ExoPlayer.Builder(context).build()
Java
ExoPlayer player = new ExoPlayer.Builder(context).build();
Remarque sur les fils de discussion
Les instances ExoPlayer doivent être accessibles depuis un seul thread d'application. Pour le dans la grande majorité des cas, il doit s'agir du thread principal de l'application. Avec les le thread principal de l'application est obligatoire lors de l'utilisation des composants d'UI d'ExoPlayer. ou l'extension IMA.
Le thread sur lequel une instance ExoPlayer doit être accessible peut être explicitement
spécifié en transmettant un Looper
lors de la création du lecteur. Si aucun Looper
n'est
spécifié, le Looper
du fil de discussion sur lequel le lecteur est créé est
utilisé, ou si ce thread n'a pas de Looper
, le Looper
du
le thread principal de l'application est utilisé. Dans tous les cas, le Looper
du fil de discussion
auquel le lecteur doit être accessible, peut être interrogé
Player.getApplicationLooper
Pour en savoir plus sur le modèle de thread d'ExoPlayer, consultez "Modèle de thread" d'ExoPlayer Javadoc.
Associer le lecteur à une vue
La bibliothèque ExoPlayer fournit une gamme de composants d'interface utilisateur prédéfinis pour les contenus multimédias
lecture. Il s'agit par exemple de PlayerView
, qui encapsule
PlayerControlView
, SubtitleView
et Surface
sur lesquels la vidéo est
rendu. Un PlayerView
peut être inclus dans le fichier XML de mise en page de votre application.
Par exemple, pour lier le lecteur à la vue:
Kotlin
// Bind the player to the view. playerView.player = player
Java
// Bind the player to the view. playerView.setPlayer(player);
Vous pouvez également utiliser PlayerControlView
en tant que composant autonome, qui est
utile pour les cas d'utilisation audio uniquement.
L'utilisation des composants d'interface utilisateur prédéfinis d'ExoPlayer est facultative. Pour les applications vidéo
qui implémentent leur propre UI, les cibles SurfaceView
, TextureView
,
SurfaceHolder
ou Surface
peuvent être définis à l'aide de la méthode ExoPlayer
setVideoSurfaceView
, setVideoTextureView
, setVideoSurfaceHolder
et
setVideoSurface
respectivement. La méthode addTextOutput
d'ExoPlayer peut
pour recevoir les sous-titres à afficher pendant la lecture.
Insérer des valeurs dans la playlist et préparer le lecteur
Dans ExoPlayer, chaque élément multimédia est représenté par un MediaItem
. Pour regarder un
l'élément multimédia, vous devez créer un élément MediaItem
correspondant, l'ajouter au
préparez le lecteur, puis appelez play
pour lancer la lecture:
Kotlin
// Build the media item. val mediaItem = MediaItem.fromUri(videoUri) // Set the media item to be played. player.setMediaItem(mediaItem) // Prepare the player. player.prepare() // Start the playback. player.play()
Java
// Build the media item. MediaItem mediaItem = MediaItem.fromUri(videoUri); // Set the media item to be played. player.setMediaItem(mediaItem); // Prepare the player. player.prepare(); // Start the playback. player.play();
ExoPlayer prend directement en charge les playlists, ce qui permet de préparer le lecteur avec plusieurs éléments multimédias à lire l'un après l'autre:
Kotlin
// Build the media items. val firstItem = MediaItem.fromUri(firstVideoUri) val secondItem = MediaItem.fromUri(secondVideoUri) // Add the media items to be played. player.addMediaItem(firstItem) player.addMediaItem(secondItem) // Prepare the player. player.prepare() // Start the playback. player.play()
Java
// Build the media items. MediaItem firstItem = MediaItem.fromUri(firstVideoUri); MediaItem secondItem = MediaItem.fromUri(secondVideoUri); // Add the media items to be played. player.addMediaItem(firstItem); player.addMediaItem(secondItem); // Prepare the player. player.prepare(); // Start the playback. player.play();
Vous pouvez modifier la playlist en cours de lecture sans avoir à préparer à nouveau. Pour en savoir plus sur l'ajout et la manipulation de la playlist, consultez la Page des playlists : En savoir plus sur les différentes options disponibles lorsque créer des éléments multimédias, tels que le découpage et l'ajout de fichiers de sous-titres, sur la Page "Éléments multimédias" :
Contrôler le lecteur
Une fois le lecteur préparé, vous pouvez contrôler la lecture en appelant des méthodes sur le lecteur. Voici quelques-unes des méthodes les plus couramment utilisées:
play
etpause
lancent et mettent en pause la lecture.seekTo
permet la recherche dans les contenus multimédias.hasPrevious
,hasNext
,previous
etnext
permettent de naviguer dans les la playlist.setRepeatMode
contrôle si le contenu multimédia est lu en boucle et de quelle manière.setShuffleModeEnabled
contrôle la lecture en mode aléatoire des playlists.setPlaybackParameters
ajuste la vitesse de lecture et le ton audio.
Si le joueur est lié à un PlayerView
ou à un PlayerControlView
,
alors l'interaction de l'utilisateur avec ces composants
entraînera des méthodes correspondantes sur
le lecteur à appeler.
Relâchez le lecteur
Il est important de libérer le lecteur lorsqu'il n'est plus nécessaire, afin de libérer
des ressources limitées, comme des décodeurs vidéo,
pour une utilisation par d'autres applications. Ce
peut être effectué en appelant ExoPlayer.release
.