W prostych przypadkach rozpoczęcie korzystania z ExoPlayer
polega na:
te kroki:
- Dodaj ExoPlayer jako zależność do projektu.
- Utwórz instancję
ExoPlayer
. - Podłącz odtwarzacz do widoku (na potrzeby wyjścia wideo i danych wejściowych użytkownika).
- Do gry przygotuj gracza za pomocą
MediaItem
. - 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.1") implementation("androidx.media3:media3-exoplayer-dash:1.4.1") implementation("androidx.media3:media3-ui:1.4.1")
Odlotowe
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"
gdzie 1.4.1 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 wartości 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
ipause
rozpoczynają i wstrzymują odtwarzanie.seekTo
umożliwia przewijanie w obrębie multimediów.hasPrevious
,hasNext
,previous
inext
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
.