Einführung in Jetpack Media3

Jetpack Media3 ist die neue Heimat für Media-Bibliotheken, mit denen Android-Apps umfangreiche Audio- und visuelle Inhalte darstellen können. Media3 bietet eine einfache Architektur mit leistungsstarken Anpassungs-, Zuverlässigkeits- und Optimierungsfunktionen basierend auf den Gerätefunktionen, um die Komplexität der Fragmentierung zu abstrahieren.

In diesem Dokument werden die wichtigsten APIs für die Implementierung von Wiedergabe- und Bearbeitungsanwendungsfällen mit Media3 vorgestellt.

Wiedergabekomponenten

Media3 bietet mehrere wichtige Komponenten für Wiedergabeanwendungsfälle. Die Klassen, aus denen diese Komponenten bestehen, sollten Ihnen bekannt sein, wenn Sie bereits mit früheren Android-Medienbibliotheken gearbeitet haben.

Das folgende Diagramm zeigt, wie diese Komponenten in einer typischen App zusammenwirken.

Die verschiedenen Komponenten einer Media3-App, die Media3 Connect verwendet, sind auf verschiedene einfache Arten miteinander verbunden, da sie Schnittstellen und Klassen gemeinsam nutzen.
Abbildung 1: Komponenten von Media-Apps

Mediaplayer

Ein Media-Player ist eine Komponente Ihrer App, mit der Mediadateien wiedergegeben werden können. In Media3 finden Sie:

Kurs Beschreibung Hinweis zur Implementierung
Player Player ist eine Schnittstelle, die herkömmliche Funktionen auf hoher Ebene für einen Media Player definiert, z. B. die Möglichkeit, die Wiedergabe zu starten, zu pausieren und zu suchen. In Media3 ist die Player-Schnittstelle eine gemeinsame API, die von mehreren Komponenten implementiert oder verwendet wird, z. B. von MediaSession und MediaController.
ExoPlayer ExoPlayer ist die Standardimplementierung der Player-Schnittstelle in Media3.

Weitere Informationen zu Media3 ExoPlayer

Die Mediensitzung

Eine Mediensitzung bietet eine universelle Möglichkeit zur Interaktion mit einem Mediaplayer. Dadurch kann eine App die Medienwiedergabe an externe Quellen übertragen und Wiedergabesteuerungsanfragen von externen Quellen empfangen. In Media3 finden Sie:

Kurs Beschreibung Hinweis zur Implementierung
MediaSession Über Mediensitzungen kann Ihre App mit einem Audio- oder Videoplayer interagieren. Sie werben extern für die Medienwiedergabe und empfangen Wiedergabebefehle von externen Quellen. In Media3 benötigt ein MediaSession ein Player, um Befehle auszuführen und den aktuellen Status abzurufen.
MediaSessionService Die MediaSessionService enthält eine Mediensitzung und den zugehörigen Player in einem Dienst, der von der Activity Ihrer App getrennt ist, um die Hintergrundwiedergabe zu ermöglichen.
MediaController Die Klasse MediaController wird in der Regel verwendet, um Befehle von außerhalb Ihrer App zu senden, z. B. von anderen Apps oder vom System selbst. Die Befehle werden an die zugrunde liegende Player der zugehörigen MediaSession gesendet. Die Klasse MediaController implementiert die Schnittstelle Player. Beim Aufrufen einer Methode sendet MediaController jedoch den Befehl, der an das verbundene MediaSession gesendet wird. Client-Apps wie Google Assistant können MediaController verwenden, um die Wiedergabe in einer verbundenen Sitzung zu steuern.
MediaLibraryService Eine MediaLibraryService ähnelt einer MediaSessionService, enthält aber zusätzliche APIs, mit denen Sie Ihre Inhaltsbibliothek für Client-Apps bereitstellen können.
MediaBrowser Mit der Klasse MediaBrowser kann der Nutzer durch die Inhaltsbibliothek einer Media-App navigieren und auswählen, welche Elemente abgespielt werden sollen. Die Klasse MediaBrowser implementiert sowohl die Schnittstellen MediaController als auch Player. Ähnlich wie bei MediaController implementieren Client-Apps wie Android Auto in der Regel MediaBrowser.

Weitere Informationen zur Media3 MediaSession

Die UI-Komponenten

Media3 bietet standardmäßige UI-Komponenten zum Ansehen von Videos und Steuern der Wiedergabe.

Kurs Beschreibung Hinweis zur Implementierung
PlayerView Standardmäßig wird View angezeigt, um Video- und Wiedergabesteuerelemente einzublenden. Stellt eine Verbindung mit ExoPlayer, MediaController oder einem anderen benutzerdefinierten Player her.
PlayerSurface Eine Composable, die eine dedizierte Zeichenfläche Surface zur Darstellung von Videos repräsentiert. Verbindet sich mit einem beliebigen Player, enthält aber keine Wiedergabesteuerung. Wird nur zum Rendern von Frames verwendet und kann entsprechend verschiedenen ContentScale-Typen in der Größe angepasst werden. Dieses und viele andere Composables finden Sie in den Compose UI-Dienstprogrammen.

Weitere Informationen zur Media3-Benutzeroberfläche

Komponenten bearbeiten

Media3 enthält die Transformer APIs für Anwendungsfälle zur Medienbearbeitung, darunter:

  • Audio- und Videobearbeitung, z. B. das Hinzufügen von Filtern und Effekten
  • Umgang mit Sonderformaten wie HDR- und Zeitlupenvideos
  • Zusammenstellung, z. B. durch Kombinieren mehrerer Eingabedateien
  • Endausgabe in eine Datei exportieren
Kurs Beschreibung Hinweis zur Implementierung
Transformer Mit der Klasse Transformer können Sie Transformationen starten und beenden sowie den Fortschritt einer laufenden Transformation prüfen.
Effects Ein Effects-Objekt ist eine Sammlung von Audio- und Videoeffekten, die auf ein Medienelement angewendet werden können. Mit ExoPlayer können Sie sich eine Vorschau der Effekte ansehen, die einem Media-Element hinzugefügt wurden, bevor Sie den Exportvorgang starten.
EditedMediaItem Ein EditedMediaItem stellt ein zu verarbeitendes Media-Element und die darauf anzuwendenden Änderungen dar.

Weitere Informationen zu Media3 Transformer

Einführungsvideo

Im folgenden Video erhalten Sie eine Einführung in Media3 von den Entwicklern, die es erstellt haben.