Für einfache Anwendungsfälle besteht der Einstieg in ExoPlayer
darin,
führen Sie die folgenden Schritte aus:
- Fügen Sie ExoPlayer als Abhängigkeit zu Ihrem Projekt hinzu.
- Erstellen Sie eine
ExoPlayer
-Instanz. - Verbinden Sie den Player mit einer Ansicht (für die Videoausgabe und Nutzereingabe).
- Bereite den Spieler mit
MediaItem
auf das Spiel vor. - Lassen Sie den Player los, wenn Sie fertig sind.
Diese Schritte werden im Folgenden ausführlicher beschrieben. Ein vollständiges Beispiel finden Sie unter
PlayerActivity
in der Haupt-Demo-App.
ExoPlayer als Abhängigkeit hinzufügen
ExoPlayer-Module hinzufügen
Der einfachste Weg, AndroidX Media3 zu nutzen, besteht darin, Gradle
Abhängigkeiten von den benötigten Bibliotheken in der build.gradle
-Datei Ihrer Anwendung
-Modul.
Für die Abhängigkeit von ExoPlayer mit DASH-Wiedergabeunterstützung und UI-Komponenten können Sie Abhängigkeiten wie folgt von den Modulen hinzufügen:
Kotlin
implementation("androidx.media3:media3-exoplayer:1.4.1") implementation("androidx.media3:media3-exoplayer-dash:1.4.1") implementation("androidx.media3:media3-ui:1.4.1")
Cool
implementation "androidx.media3:media3-exoplayer:1.4.1" implementation "androidx.media3:media3-exoplayer-dash:1.4.1" implementation "androidx.media3:media3-ui:1.4.1"
wobei 1.4.1 Ihre bevorzugte Version ist (die neueste Version finden Sie unter Weitere Informationen finden Sie in den Versionshinweisen). Alle Module müssen dieselbe Version haben.
Die Bibliotheksmodule von AndroidX Media3 externe Bibliotheken für zusätzliche Funktionen. Einige sind aus dem Maven-Repository verfügbar sind, während andere manuell erstellt werden müssen. Durchsuchen Sie das Bibliotheksverzeichnis. In den einzelnen README-Dateien finden Sie weitere Informationen.
Weitere Informationen zu den verfügbaren Bibliotheksmodulen finden Sie auf der Google Maven AndroidX Media-Seite
Java 8-Unterstützung aktivieren
Falls dies noch nicht der Fall ist, musst du die Java 8-Unterstützung in allen build.gradle
aktivieren.
, die von ExoPlayer abhängig sind, indem Sie Folgendes in den Abschnitt android
einfügen:
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
}
Multidex aktivieren
Wenn die Gradle-minSdkVersion
-Version 20 oder niedriger ist, sollten Sie
Aktiviere Multidex in dieser Reihenfolge
um Build-Fehler zu vermeiden.
Player erstellen
Sie können eine ExoPlayer
-Instanz mit ExoPlayer.Builder
erstellen, die Folgendes bereitstellt:
Anpassungsoptionen. Der folgende Code ist das einfachste Beispiel für
Instanz erstellen.
Kotlin
val player = ExoPlayer.Builder(context).build()
Java
ExoPlayer player = new ExoPlayer.Builder(context).build();
Hinweis zum Threading
Auf ExoPlayer-Instanzen muss über einen einzelnen Anwendungsthread zugegriffen werden. Für die in den allermeisten Fällen der Hauptthread der Anwendung sein sollte. Mit der Der Hauptthread der Anwendung ist bei Verwendung der UI-Komponenten von ExoPlayer erforderlich. oder die IMA-Erweiterung verwenden.
Der Thread, auf dem eine ExoPlayer-Instanz zugegriffen werden muss, kann explizit
wird angegeben, indem beim Erstellen des Players ein Looper
übergeben wird. Wenn kein Looper
vorhanden ist
angegeben ist, dann ist der Looper
des Threads, in dem der Player erstellt wird,
verwendet wird oder wenn dieser Thread keine Looper
hat, wird der Looper
des
Hauptthread der Anwendung verwendet wird. In allen Fällen ist die Looper
des Threads aus
auf die der Spieler zugreifen muss, kann mit
Player.getApplicationLooper
.
Weitere Informationen zum Threading-Modell von ExoPlayer finden Sie in der „Threading-Modell“ im ExoPlayer-Javadoc
Player an eine Ansicht anhängen
Die ExoPlayer-Bibliothek bietet eine Reihe vorgefertigter UI-Komponenten für Medien
Wiedergabe starten. Dazu gehört unter anderem PlayerView
, das ein
PlayerControlView
, SubtitleView
und Surface
, für das Video
gerendert. Eine PlayerView
kann in die Layout-XML deiner App eingefügt werden.
So binden Sie den Player beispielsweise an die Ansicht:
Kotlin
// Bind the player to the view. playerView.player = player
Java
// Bind the player to the view. playerView.setPlayer(player);
Sie können PlayerControlView
auch als eigenständige Komponente verwenden.
die nur für Audio-Anwendungsfälle nützlich sind.
Die Verwendung der vordefinierten UI-Komponenten von ExoPlayer ist optional. Für Video-Apps
die eine eigene UI implementieren, nämlich SurfaceView
, TextureView
,
SurfaceHolder
oder Surface
können mit dem ExoPlayer festgelegt werden
setVideoSurfaceView
, setVideoTextureView
, setVideoSurfaceHolder
und
setVideoSurface
-Methoden. Die Methode addTextOutput
von ExoPlayer kann
wird verwendet, um Untertitel zu erhalten, die während der Wiedergabe gerendert werden sollen.
Playlist füllen und Player vorbereiten
In ExoPlayer wird jedes Medium durch ein MediaItem
dargestellt. So spielst du
müssen Sie eine entsprechende MediaItem
erstellen, diese zum
Player, bereiten Sie den Player vor und rufen Sie play
auf, um die Wiedergabe zu starten:
Kotlin
// Build the media item. val mediaItem = MediaItem.fromUri(videoUri) // Set the media item to be played. player.setMediaItem(mediaItem) // Prepare the player. player.prepare() // Start the playback. player.play()
Java
// Build the media item. MediaItem mediaItem = MediaItem.fromUri(videoUri); // Set the media item to be played. player.setMediaItem(mediaItem); // Prepare the player. player.prepare(); // Start the playback. player.play();
ExoPlayer unterstützt Playlists direkt, sodass Sie den Player mit mehreren Medienelementen, die nacheinander wiedergegeben werden sollen:
Kotlin
// Build the media items. val firstItem = MediaItem.fromUri(firstVideoUri) val secondItem = MediaItem.fromUri(secondVideoUri) // Add the media items to be played. player.addMediaItem(firstItem) player.addMediaItem(secondItem) // Prepare the player. player.prepare() // Start the playback. player.play()
Java
// Build the media items. MediaItem firstItem = MediaItem.fromUri(firstVideoUri); MediaItem secondItem = MediaItem.fromUri(secondVideoUri); // Add the media items to be played. player.addMediaItem(firstItem); player.addMediaItem(secondItem); // Prepare the player. player.prepare(); // Start the playback. player.play();
Die Playlist kann während der Wiedergabe aktualisiert werden, ohne dass das noch einmal im Player. Weitere Informationen zum Befüllen und Bearbeiten von Playlists findest du in der Seite „Playlists“: Weitere Informationen zu den verschiedenen Optionen wie das Ausschneiden und Anhängen von Untertiteldateien auf der Seite „Medien“:
Player steuern
Sobald der Player vorbereitet ist, kann die Wiedergabe durch Aufrufmethoden gesteuert werden. im Player angezeigt. Dies sind einige der am häufigsten verwendeten Methoden:
play
undpause
starten und pausieren die Wiedergabe.seekTo
ermöglicht die Suche innerhalb der Medien.hasPrevious
,hasNext
,previous
undnext
ermöglichen die Navigation im .setRepeatMode
legt fest, ob und wie Medien als Schleife wiedergegeben werden.setShuffleModeEnabled
steuert den Zufallsmix der Playlist.setPlaybackParameters
passt die Wiedergabegeschwindigkeit und die Tonhöhe an.
Wenn der Spieler an eine PlayerView
oder PlayerControlView
gebunden ist,
führt die Nutzerinteraktion mit diesen
Komponenten zu den entsprechenden Methoden auf
den aufzurufenden Player.
Lasse den Player los.
Es ist wichtig, den Player freizugeben, wenn er nicht mehr benötigt wird,
begrenzte Ressourcen wie Videodecoder für die Nutzung durch andere Anwendungen bereitstellen. Dieses
kann durch Aufrufen von ExoPlayer.release
erfolgen.