Pierwsze kroki

W prostych przypadkach rozpoczęcie korzystania z ExoPlayer polega na: te kroki:

  1. Dodaj ExoPlayer jako zależność do projektu.
  2. Utwórz instancję ExoPlayer.
  3. Podłącz odtwarzacz do widoku (na potrzeby wyjścia wideo i danych wejściowych użytkownika).
  4. Do gry przygotuj gracza za pomocą MediaItem.
  5. Gdy skończysz, puść odtwarzacz.

Czynności te zostały szczegółowo opisane poniżej. Pełny przykład znajdziesz tutaj: PlayerActivity w głównej aplikacji demonstracyjnej.

Dodaj ExoPlayer jako zależność

Dodaj moduły ExoPlayer

Najprostszym sposobem na rozpoczęcie korzystania z AndroidX Media3 jest dodanie narzędzia Gradle. zależności od bibliotek, których potrzebujesz w pliku build.gradle aplikacji .

Na przykład: aby korzystać z platformy ExoPlayer z obsługą odtwarzania DASH i komponentami interfejsu możesz dodać zależności od modułów w ten sposób:

Kotlin

implementation("androidx.media3:media3-exoplayer:1.4.0")
implementation("androidx.media3:media3-exoplayer-dash:1.4.0")
implementation("androidx.media3:media3-ui:1.4.0")

Odlotowe

implementation "androidx.media3:media3-exoplayer:1.4.0"
implementation "androidx.media3:media3-exoplayer-dash:1.4.0"
implementation "androidx.media3:media3-ui:1.4.0"

gdzie 1.4.0 to preferowana wersja (najnowsza wersja jest dostępna zapoznaj się z informacjami o wersji). Wszystkie moduły muszą być w tej samej wersji.

AndroidX Media3 ma moduły bibliotek zależne od z bibliotek zewnętrznych, aby udostępnić dodatkowe funkcje. Niektóre dostępne z repozytorium Maven, a inne trzeba skompilować ręcznie. Aby uzyskać szczegółowe informacje, przejrzyj katalog bibliotek i wyświetl poszczególne pliki README.

Więcej informacji o dostępnych modułach bibliotecznych znajdziesz na Strona Media Google Maven AndroidX.

Włącz obsługę języka Java 8

Musisz włączyć obsługę języka Java 8 we wszystkich build.gradle, jeśli jeszcze nie jest włączona zależne od ExoPlayer, dodając w sekcji android ten kod:

compileOptions {
  targetCompatibility JavaVersion.VERSION_1_8
}

Włącz Multidex

Jeśli wartość Gradle minSdkVersion ma wartość 20 lub mniej, włącz multidex po kolei aby zapobiec błędom kompilacji.

Tworzenie odtwarzacza

Możesz utworzyć instancję ExoPlayer za pomocą ExoPlayer.Builder, co zapewnia wiele opcji dostosowywania. Poniższy kod to najprostszy przykład podczas tworzenia instancji.

Kotlin

val player = ExoPlayer.Builder(context).build()

Java

ExoPlayer player = new ExoPlayer.Builder(context).build();

Uwaga na temat tworzenia wątków

Dostęp do instancji ExoPlayer musi być możliwy z poziomu pojedynczego wątku aplikacji. W przypadku atrybutu w większości przypadków powinien to być główny wątek aplikacji. Korzystanie z główny wątek aplikacji jest wymagany, gdy używasz komponentów interfejsu ExoPlayer lub rozszerzeniu IMA.

Wątek, do którego należy uzyskać dostęp do instancji ExoPlayer, może być jawnie określony przez przekazanie Looper podczas tworzenia odtwarzacza. Jeśli nie ma wartości Looper jeśli zostanie określony, to Looper wątku, w którym jest tworzony odtwarzacz, to lub jeśli ten wątek nie ma parametru Looper, parametr Looper używany jest główny wątek aplikacji. We wszystkich przypadkach Looper wątku z do którego należy uzyskać dostęp do odtwarzacza, można wysłać zapytanie za pomocą Player.getApplicationLooper

Więcej informacji o modelu podziału na wątki w odtwarzaczu ExoPlayer znajdziesz w „Model podziału na wątki” programu ExoPlayer Javadoc.

Podłączanie odtwarzacza do widoku

Biblioteka ExoPlayer zawiera wiele gotowych komponentów interfejsu do obsługi multimediów odtwarzania. Należą do nich m.in. PlayerView, który zawiera znak PlayerControlView, SubtitleView i Surface, w którym jest odtwarzany film wyrenderowano. Element PlayerView można umieścić w układzie XML aplikacji. Aby na przykład powiązać odtwarzacz z widokiem:

Kotlin

// Bind the player to the view.
playerView.player = player

Java

// Bind the player to the view.
playerView.setPlayer(player);

PlayerControlView możesz też używać jako samodzielnego komponentu, co przydaje się tylko w przypadku reklam dźwiękowych.

Korzystanie z gotowych komponentów interfejsu ExoPlayer jest opcjonalne. Aplikacje wideo używający własnego interfejsu użytkownika, docelowy SurfaceView, TextureView, Można ustawić SurfaceHolder lub Surface za pomocą odtwarzacza ExoPlayer setVideoSurfaceView, setVideoTextureView, setVideoSurfaceHolder i setVideoSurface. Metoda addTextOutput ExoPlayer służy do otrzymywania napisów, które powinny być renderowane podczas odtwarzania.

Wypełnij playlistę i przygotuj odtwarzacz

W odtwarzaczu ExoPlayer każdy plik multimedialny jest reprezentowany przez element MediaItem. Aby odtworzyć musisz utworzyć odpowiedni MediaItem i dodać go do odtwarzacz, przygotuj go i wywołaj play, aby rozpocząć odtwarzanie:

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 obsługuje bezpośrednio playlisty, więc można przygotować odtwarzacz z wieloma elementami multimedialnymi, które można odtwarzać jeden po drugim:

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();

Playlistę można aktualizować podczas odtwarzania bez konieczności przygotowywania . Więcej informacji o zapełnianiu playlisty i manipulowaniu nią na Strona Playlisty. Więcej informacji o różnych opcjach dostępnych przy tworzy multimedia, takie jak przycinanie i dołączanie plików z napisami, Strona elementów multimedialnych.

Sterowanie odtwarzaczem

Po przygotowaniu odtwarzacza można sterować odtwarzaniem, korzystając z metod wywoływania w odtwarzaczu. Oto kilka najczęściej stosowanych metod:

  • play i pause rozpoczynają i wstrzymują odtwarzanie.
  • seekTo umożliwia przewijanie w obrębie multimediów.
  • hasPrevious, hasNext, previous i next pozwalają na nawigację na playliście.
  • setRepeatMode określa, czy i w jaki sposób mają być zapętlone multimedia.
  • setShuffleModeEnabled kontroluje odtwarzanie losowe playlisty.
  • Urządzenie setPlaybackParameters dostosowuje szybkość odtwarzania oraz tonację dźwięku.

Jeśli gracz jest powiązany z elementem PlayerView lub PlayerControlView, interakcja użytkownika z tymi komponentami spowoduje, że odpowiednie metody odtwarzacz, który ma zostać wywołany.

Zwolnij odtwarzacz

Ważne jest, by odtwarzacz, który nie jest już potrzebny, został zwolniony, przez wykorzystanie ograniczonych zasobów, takich jak dekodery wideo, do użytku w innych aplikacjach. Ten można to zrobić, dzwoniąc pod numer ExoPlayer.release.