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.
 
  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 | Playerist 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. vonMediaSessionundMediaController. | 
| ExoPlayer | ExoPlayerist die Standardimplementierung derPlayer-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 MediaSessioneinPlayer, um Befehle auszuführen und den aktuellen Status abzurufen. | 
| MediaSessionService | Die MediaSessionServiceenthält eine Mediensitzung und den zugehörigen Player in einem Dienst, der von derActivityIhrer App getrennt ist, um die Hintergrundwiedergabe zu ermöglichen. | |
| MediaController | Die Klasse MediaControllerwird 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 liegendePlayerder zugehörigenMediaSessiongesendet. | Die Klasse MediaControllerimplementiert die SchnittstellePlayer. Beim Aufrufen einer Methode sendetMediaControllerjedoch den Befehl, der an das verbundeneMediaSessiongesendet wird. Client-Apps wie Google Assistant könnenMediaControllerverwenden, um die Wiedergabe in einer verbundenen Sitzung zu steuern. | 
| MediaLibraryService | Eine MediaLibraryServiceähnelt einerMediaSessionService, enthält aber zusätzliche APIs, mit denen Sie Ihre Inhaltsbibliothek für Client-Apps bereitstellen können. | |
| MediaBrowser | Mit der Klasse MediaBrowserkann der Nutzer durch die Inhaltsbibliothek einer Media-App navigieren und auswählen, welche Elemente abgespielt werden sollen. | Die Klasse MediaBrowserimplementiert sowohl die SchnittstellenMediaControllerals auchPlayer. Ähnlich wie beiMediaControllerimplementieren Client-Apps wie Android Auto in der RegelMediaBrowser. | 
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 Viewangezeigt, um Video- und Wiedergabesteuerelemente einzublenden. | Stellt eine Verbindung mit ExoPlayer,MediaControlleroder einem anderen benutzerdefiniertenPlayerher. | 
| PlayerSurface | Eine Composable, die eine dedizierte Zeichenfläche Surfacezur 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 Transformerkö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 ExoPlayerkönnen Sie sich eine Vorschau der Effekte ansehen, die einem Media-Element hinzugefügt wurden, bevor Sie den Exportvorgang starten. | 
| EditedMediaItem | Ein EditedMediaItemstellt 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.
Nützliche Links
- Media Developer Center
- ExoPlayerDokumente
- Migrationsanleitung
- AndroidX Media3 auf GitHub
- Media3-Beispiel-App für Mediensitzungen
- Beispiel-App für universellen Android-Musikplayer
