Einführung in Jetpack Media3

Jetpack Media3 ist die neue Mediathek für Medienbibliotheken, mit denen Android-Apps umfangreiche Audio- und visuelle Erlebnisse darstellen können. Media3 bietet eine einfache Architektur mit leistungsstarken Anpassungs-, Zuverlässigkeits- und Optimierungsfunktionen, die auf den Gerätefunktionen basieren, um die Komplexität der Fragmentierung zu reduzieren.

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 Wiedergabe-Anwendungsfälle. Die Klassen, aus denen diese Komponenten bestehen, sind Ihnen wahrscheinlich vertraut, wenn Sie bereits mit früheren Android-Medienbibliotheken gearbeitet haben.

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

Die verschiedenen Komponenten einer Medien-App, die Media3 verwendet, lassen sich auf verschiedene einfache Arten miteinander verbinden, da sie Schnittstellen und Klassen gemeinsam nutzen.
Abbildung 1: Komponenten einer Medien-App

Der Mediaplayer

Ein Mediaplayer ist eine Komponente Ihrer App, die die Wiedergabe von Mediendateien ermöglicht. In Media3 finden Sie Folgendes:

Klasse Beschreibung Hinweis zur Implementierung
Player Player ist eine Schnittstelle, die herkömmliche allgemeine Funktionen für einen Mediaplayer definiert, z. B. die Möglichkeit, Inhalte abzuspielen, zu pausieren und zu suchen. In Media3 ist die Player-Schnittstelle eine gängige 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 Media Session bietet eine universelle Möglichkeit, mit einem Mediaplayer zu interagieren. So kann eine App die Medienwiedergabe für externe Quellen bewerben und Anfragen zur Wiedergabesteuerung von externen Quellen empfangen. In Media3 finden Sie Folgendes:

Klasse Beschreibung Hinweis zur Implementierung
MediaSession Media Sessions ermöglichen es deiner App, mit einem Audio- oder Videoplayer zu interagieren. Sie bewerben die Medienwiedergabe extern und empfangen Wiedergabebefehle von externen Quellen. In Media3 benötigt ein MediaSession einen Player, um Befehle auszuführen und den aktuellen Status abzurufen.
MediaSessionService Der MediaSessionService enthält eine Mediensitzung und den zugehörigen Player in einem Dienst, der von der Haupt-Activity Ihrer App getrennt ist, um die Wiedergabe im Hintergrund zu ermöglichen.
MediaController Die Klasse MediaController wird im Allgemeinen verwendet, um Befehle von außerhalb deiner 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. Wenn jedoch eine Methode aufgerufen wird, sendet MediaController den Befehl an die verbundene MediaSession. Client-Apps wie Google Assistant können MediaController verwenden, um die Wiedergabe in einer verbundenen Sitzung zu steuern.
MediaLibraryService Ein MediaLibraryService ähnelt einem MediaSessionService, enthält jedoch zusätzliche APIs, mit denen Sie Ihre Inhaltsbibliothek für Client-Apps bereitstellen können.
MediaBrowser Mit der Klasse MediaBrowser können Nutzer die Inhaltsbibliothek einer Medien-App durchsuchen und auswählen, welche Elemente wiedergegeben werden sollen. Die Klasse MediaBrowser implementiert sowohl die Schnittstelle MediaController als auch die Schnittstelle Player. Ähnlich wie MediaController implementieren Client-Apps wie Android Auto im Allgemeinen MediaBrowser.

Weitere Informationen zu Media3 MediaSession

Die UI-Komponenten

Media3 bietet Standard-UI-Komponenten zum Ansehen von Videos und Steuern der Wiedergabe.

Klasse Beschreibung Hinweis zur Implementierung
PlayerView Ein Standard-View, um Video- und Wiedergabesteuerungen anzuzeigen. Stellt eine Verbindung zu ExoPlayer, MediaController oder einem anderen benutzerdefinierten Player her.
PlayerSurface Ein Composable, das eine dedizierte Zeichnung Surface zum Anzeigen von Videos darstellt. Kann mit jedem Player verbunden werden, enthält aber keine Wiedergabesteuerung. Wird nur zum Rendern von Frames verwendet und kann je nach ContentScale-Typen angepasst werden. Diese 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 der Medienbearbeitung, darunter:

  • Audio- und Videoverarbeitung, z. B. Hinzufügen von Filtern und Effekten
  • Umgang mit speziellen Formaten wie HDR-Videos und Zeitlupenvideos
  • Zusammensetzung, z. B. Kombinieren mehrerer Eingabedateien
  • Endgültige Ausgabe in eine Datei exportieren
Klasse Beschreibung Hinweis zur Implementierung
Transformer Verwenden Sie die Klasse Transformer, um Transformationen zu starten und zu beenden und um nach Fortschrittsaktualisierungen für eine laufende Transformation zu suchen.
Effects Ein Effects-Objekt ist eine Sammlung von Audio- und Videoeffekten, die auf eine Mediendatei angewendet werden können. Mit ExoPlayer können Sie sich eine Vorschau der Effekte ansehen, die einer Mediendatei hinzugefügt wurden, bevor Sie den Exportvorgang starten.
EditedMediaItem Ein EditedMediaItem stellt eine zu verarbeitende Mediendatei und die darauf anzuwendenden Änderungen dar.

Weitere Informationen zu Media3 Transformer

Einführungsvideo

In diesem Video stellen die Entwickler von Media3 die Bibliothek vor: