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.
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:
Nützliche Links
- Media Developer Center
ExoPlayerDokumente- Migrationsanleitung
- AndroidX Media3 auf GitHub
- Beispiel-App für Media3-Mediensitzungen
- Beispiel-App „Universal Android Music Player“