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 | Playerest 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 Playerest une API courante implémentée ou utilisée par plusieurs composants, y comprisMediaSessionetMediaController, par exemple. | 
| ExoPlayer | ExoPlayerest l'implémentation par défaut de l'interfacePlayerdans 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 MediaSessiona besoin d'unPlayerpour exécuter des commandes et obtenir l'état actuel. | 
| MediaSessionService | Le MediaSessionServicecontient une session multimédia et son lecteur associé dans un service distinct duActivityprincipal de votre application pour faciliter la lecture en arrière-plan. | |
| MediaController | La classe MediaControllerest 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 auPlayersous-jacent duMediaSessionassocié. | La classe MediaControllerimplémente l'interfacePlayer, mais lors de l'appel d'une méthode,MediaControllerenvoie la commande envoyée à l'MediaSessionconnecté. Les applications clientes telles que l'Assistant Google peuvent utiliserMediaControllerpour contrôler la lecture dans une session connectée. | 
| MediaLibraryService | Un MediaLibraryServiceest semblable à unMediaSessionService, 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 MediaBrowserpermet à l'utilisateur de parcourir la bibliothèque de contenu d'une application multimédia et de sélectionner les éléments à lire. | La classe MediaBrowserimplémente les interfacesMediaControlleretPlayer. À l'instar deMediaController, les applications clientes telles qu'Android Auto implémentent généralementMediaBrowser. | 
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 | Viewpar défaut pour afficher la vidéo et les commandes de lecture. | se connecte à ExoPlayer,MediaControllerou à tout autrePlayerpersonnalisé ; | 
| PlayerSurface | Composable représentant un dessin dédié Surfacepour 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 Transformerpour démarrer et arrêter les transformations, et pour vérifier la progression d'une transformation en cours. | |
| Effects | Un objet Effectsest une collection d'effets audio et vidéo à appliquer à un élément multimédia. | Vous pouvez utiliser ExoPlayerpour prévisualiser les effets ajoutés à un élément multimédia avant de lancer le processus d'exportation. | 
| EditedMediaItem | Un EditedMediaItemrepré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
