Erste Schritte

Für einfache Anwendungsfälle besteht der Einstieg in ExoPlayer darin, führen Sie die folgenden Schritte aus:

  1. Fügen Sie ExoPlayer als Abhängigkeit zu Ihrem Projekt hinzu.
  2. Erstellen Sie eine ExoPlayer-Instanz.
  3. Verbinden Sie den Player mit einer Ansicht (für die Videoausgabe und Nutzereingabe).
  4. Bereite den Spieler mit MediaItem auf das Spiel vor.
  5. 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 und pause starten und pausieren die Wiedergabe.
  • seekTo ermöglicht die Suche innerhalb der Medien.
  • hasPrevious, hasNext, previous und next 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.