Jetpack Media3 est le nouvel espace dédié aux bibliothèques multimédias qui permettent aux applications Android d'afficher des expériences audio et visuelles riches. Media3 offre une architecture simple avec une personnalisation puissante, une fiabilité et des optimisations basées sur les capacités de l'appareil pour éliminer la complexité liée à la fragmentation.
Ce document présente les principales API permettant d'implémenter des cas d'utilisation de lecture et de modification avec Media3.
Composants de lecture
Media3 propose plusieurs composants clés pour les cas d'utilisation de la lecture. Les classes qui composent ces composants vous seront familières si vous avez déjà travaillé avec des bibliothèques multimédias Android.
Le schéma suivant montre comment ces composants s'agencent dans une application typique.

Lecteur multimédia
Un lecteur multimédia est un composant de votre application qui permet de lire des fichiers multimédias. Dans Media3, vous trouverez :
Cours | Description | Remarque sur l'implémentation |
---|---|---|
Player |
Player est une interface qui définit les fonctionnalités de haut niveau traditionnelles d'un lecteur multimédia, telles que la possibilité de lire, de mettre en pause et de rechercher.
|
Dans Media3, l'interface Player est une API courante implémentée ou utilisée par plusieurs composants, y compris MediaSession et MediaController , par exemple.
|
ExoPlayer |
ExoPlayer est l'implémentation par défaut de l'interface Player dans Media3.
|
En savoir plus sur Media3 ExoPlayer
Session multimédia
Une session multimédia offre un moyen universel d'interagir avec un lecteur multimédia. Cela permet à une application de diffuser la lecture de contenus multimédias vers des sources externes et de recevoir des demandes de contrôle de la lecture provenant de sources externes. Dans Media3, vous trouverez :
Cours | Description | Remarque sur l'implémentation |
---|---|---|
MediaSession |
Les sessions multimédias permettent à votre application d'interagir avec un lecteur audio ou vidéo. Ils font la publicité de la lecture de contenus multimédias en externe et reçoivent des commandes de lecture de sources externes. |
Dans Media3, un MediaSession a besoin d'un Player pour exécuter des commandes et obtenir l'état actuel.
|
MediaSessionService |
Le MediaSessionService contient une session multimédia et son lecteur associé dans un service distinct du Activity principal de votre application pour faciliter la lecture en arrière-plan.
|
|
MediaController |
La classe MediaController est généralement utilisée pour envoyer des commandes depuis l'extérieur de votre application, par exemple depuis d'autres applications ou le système lui-même.
Les commandes sont envoyées au Player sous-jacent du MediaSession associé.
|
La classe MediaController implémente l'interface Player , mais lors de l'appel d'une méthode, MediaController envoie la commande envoyée à l'MediaSession connecté. Les applications clientes telles que l'Assistant Google peuvent utiliser MediaController pour contrôler la lecture dans une session connectée.
|
MediaLibraryService |
Un MediaLibraryService est semblable à un MediaSessionService , sauf qu'il inclut des API supplémentaires pour vous permettre de diffuser votre bibliothèque de contenu dans des applications clientes.
|
|
MediaBrowser |
La classe MediaBrowser permet à l'utilisateur de parcourir la bibliothèque de contenu d'une application multimédia et de sélectionner les éléments à lire.
|
La classe MediaBrowser implémente les interfaces MediaController et Player . À l'instar de MediaController , les applications clientes telles qu'Android Auto implémentent généralement MediaBrowser .
|
En savoir plus sur Media3 MediaSession
Composants d'UI
Media3 fournit des composants d'interface utilisateur par défaut pour afficher des vidéos et contrôler la lecture.
Cours | Description | Remarque sur l'implémentation |
---|---|---|
PlayerView |
View par défaut pour afficher la vidéo et les commandes de lecture.
|
se connecte à ExoPlayer , MediaController ou à tout autre Player personnalisé ;
|
PlayerSurface |
Composable représentant un dessin dédié
Surface
pour afficher la vidéo.
|
Se connecte à n'importe quel Player , mais ne contient pas de commandes de lecture.
Utilisé uniquement pour le rendu des frames et peut être redimensionné en fonction de différents types
ContentScale . Ce composable et bien d'autres sont disponibles dans les utilitaires de l'UI Compose.
|
En savoir plus sur l'UI Media3
Modifier des composants
Media3 inclut les API Transformer pour les cas d'utilisation de l'édition multimédia, y compris :
- Traitement audio et vidéo, comme l'ajout de filtres et d'effets
- Gérer les formats spéciaux, tels que les vidéos HDR et les vidéos au ralenti
- Composition, comme la combinaison de plusieurs fichiers d'entrée
- Exporter le résultat final dans un fichier
Cours | Description | Remarque sur l'implémentation |
---|---|---|
Transformer |
Utilisez la classe Transformer pour démarrer et arrêter les transformations, et pour vérifier la progression d'une transformation en cours.
|
|
Effects |
Un objet Effects est une collection d'effets audio et vidéo à appliquer à un élément multimédia.
|
Vous pouvez utiliser ExoPlayer pour prévisualiser les effets ajoutés à un élément multimédia avant de lancer le processus d'exportation.
|
EditedMediaItem |
Un EditedMediaItem représente un élément multimédia à traiter et les modifications à lui appliquer.
|
En savoir plus sur Media3 Transformer
Vidéo d'introduction
Regardez la vidéo ci-dessous pour découvrir Media3, présentée par les ingénieurs qui l'ont conçu.
Liens utiles
- Centre pour les développeurs multimédias
- Documentation
ExoPlayer
- Guide de migration
- AndroidX Media3 sur GitHub
- Application exemple de session multimédia Media3
- Exemple d'application Universal Android Music Player