Présentation de Jetpack Media3

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.

Les différents composants d'une application multimédia qui utilise Media3 sont connectés de plusieurs manières simples grâce au partage d'interfaces et de classes.
Figure 1 : Composants de l'application multimédia

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.