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 enrichies. Media3 offre une architecture simple avec des fonctionnalités de personnalisation, de fiabilité et d'optimisation puissantes 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 montage avec Media3.
Composants de lecture
Media3 propose plusieurs composants clés pour les cas d'utilisation de 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'assemblent dans une application classique.
Le 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 :
| Class | 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 lecture, la mise en pause et la recherche.
|
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
La session multimédia
Une session multimédia offre un moyen universel d'interagir avec un lecteur multimédia. Cela permet à une application d'annoncer la lecture de contenus multimédias à des sources externes et de recevoir des commandes de lecture de la part de sources externes. Dans Media3, vous trouverez :
| Class | Description | Remarque sur l'implémentation |
|---|---|---|
MediaSession |
Les sessions multimédias permettent à votre application d'interagir avec un lecteur audio ou vidéo. Elles annoncent la lecture multimédia en externe et reçoivent des commandes de lecture depuis des 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 de l'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 au 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, mais il inclut des API supplémentaires pour vous permettre de diffuser votre bibliothèque de contenus auprès des applications clientes.
|
|
MediaBrowser |
La classe MediaBrowser permet à l'utilisateur de parcourir la bibliothèque de contenus d'une application multimédia et de sélectionner les éléments à lire.
|
La classe MediaBrowser implémente les interfaces MediaController et Player. Comme pour MediaController, les applications clientes telles qu'Android Auto implémentent généralement MediaBrowser.
|
En savoir plus sur Media3 MediaSession
Les composants d'UI
Media3 fournit des composants d'interface utilisateur par défaut pour visionner des vidéos et contrôler la lecture.
| Class | Description | Remarque sur l'implémentation |
|---|---|---|
PlayerView |
Un View par défaut pour afficher les commandes de vidéo et de lecture.
|
Se connecte à ExoPlayer, MediaController ou à tout autre Player personnalisé.
|
PlayerSurface |
Un composable représentant un Surface de dessin dédié pour afficher la vidéo.
|
Se connecte à n'importe quel Player, mais ne contient pas de commandes de lecture.
Utilisé uniquement pour l'affichage des frames et peut être redimensionné en fonction de différents types de
ContentScale. Vous trouverez ce composable et bien d'autres dans les utilitaires d'interface utilisateur Compose.
|
En savoir plus sur l'UI Media3
Modifier des composants
Media3 inclut les API Transformer pour les cas d'utilisation de montage 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 au ralenti
- Composition, par exemple en combinant plusieurs fichiers d'entrée
- Exporter le résultat final dans un fichier
| Class | Description | Remarque sur l'implémentation |
|---|---|---|
Transformer |
Utilisez la classe Transformer pour démarrer et arrêter des transformations, et pour vérifier la progression d'une transformation en cours.
|
|
Effects |
Un objet Effects est un ensemble 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 cette vidéo pour découvrir Media3, présentée par les ingénieurs qui l'ont conçue :
Liens utiles
- Media Developer Center
- Documentation
ExoPlayer - Guide de migration
- AndroidX Media3 sur GitHub
- Exemple d'application de session multimédia Media3
- Application exemple Universal Android Music Player