Untuk kasus penggunaan sederhana, memulai ExoPlayer
terdiri dari penerapan
langkah-langkah berikut:
- Menambahkan ExoPlayer sebagai dependensi ke project Anda.
- Buat instance
ExoPlayer
. - Pasang pemutar ke tampilan (untuk output video dan input pengguna).
- Siapkan pemain dengan
MediaItem
untuk bermain. - Lepaskan pemutar setelah selesai.
Langkah-langkah ini dijelaskan secara lebih mendetail di bawah. Untuk contoh lengkapnya, lihat PlayerActivity
dalam aplikasi demo utama.
Menambahkan ExoPlayer sebagai dependensi
Menambahkan modul ExoPlayer
Cara termudah untuk mulai menggunakan AndroidX Media3 adalah dengan menambahkan dependensi
gradle pada library yang Anda perlukan dalam file build.gradle
di modul
aplikasi Anda.
Misalnya, untuk bergantung pada ExoPlayer dengan dukungan pemutaran DASH dan komponen UI, Anda dapat menambahkan dependensi pada modul seperti ini:
Kotlin
implementation("androidx.media3:media3-exoplayer:1.3.1") implementation("androidx.media3:media3-exoplayer-dash:1.3.1") implementation("androidx.media3:media3-ui:1.3.1")
Groovy
implementation "androidx.media3:media3-exoplayer:1.3.1" implementation "androidx.media3:media3-exoplayer-dash:1.3.1" implementation "androidx.media3:media3-ui:1.3.1"
dengan 1.3.1 adalah versi pilihan Anda (versi terbaru dapat ditemukan dengan membaca catatan rilis). Semua modul harus berupa versi yang sama.
AndroidX Media3 memiliki modul library yang bergantung pada library eksternal untuk menyediakan fungsi tambahan. Beberapa tersedia dari repositori Maven, sedangkan yang lainnya harus di-build secara manual. Jelajahi direktori perpustakaan dan lihat setiap README untuk mengetahui detailnya.
Informasi selengkapnya tentang modul library yang tersedia dapat ditemukan di halaman Media Google Maven AndroidX.
Mengaktifkan dukungan Java 8
Jika belum diaktifkan, Anda harus mengaktifkan dukungan Java 8 di semua file build.gradle
yang bergantung pada ExoPlayer, dengan menambahkan berikut ini ke bagian android
:
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
}
Mengaktifkan multidex
Jika minSdkVersion
Gradle adalah 20 atau lebih rendah, Anda harus
mengaktifkan multidex untuk
mencegah error build.
Membuat pemutar
Anda dapat membuat instance ExoPlayer
menggunakan ExoPlayer.Builder
, yang menyediakan
berbagai opsi penyesuaian. Kode berikut adalah contoh paling sederhana untuk membuat instance.
Kotlin
val player = ExoPlayer.Builder(context).build()
Java
ExoPlayer player = new ExoPlayer.Builder(context).build();
Catatan tentang threading
Instance ExoPlayer harus diakses dari satu thread aplikasi. Untuk sebagian besar kasus, file ini harus menjadi thread utama aplikasi. Penggunaan thread utama aplikasi adalah persyaratan saat menggunakan komponen UI ExoPlayer atau ekstensi IMA.
Thread tempat instance ExoPlayer harus diakses dapat ditentukan secara eksplisit
dengan meneruskan Looper
saat membuat pemutar. Jika tidak ada Looper
yang ditentukan, Looper
thread tempat pemutar dibuat akan digunakan, atau jika thread tersebut tidak memiliki Looper
, Looper
dari thread utama aplikasi akan digunakan. Dalam semua kasus, Looper
thread tempat
pemain harus diakses dapat dikueri menggunakan
Player.getApplicationLooper
.
Untuk mengetahui informasi selengkapnya tentang model threading ExoPlayer, lihat bagian "Model Threading" dari ExoPlayer Javadoc.
Memasang pemutar ke tampilan
Library ExoPlayer menyediakan berbagai komponen UI bawaan untuk pemutaran
media. Objek ini mencakup PlayerView
, yang mengenkapsulasi
PlayerControlView
, SubtitleView
, dan Surface
tempat video
dirender. PlayerView
dapat disertakan dalam XML tata letak aplikasi Anda.
Misalnya, untuk mengikat pemutar ke tampilan:
Kotlin
// Bind the player to the view. playerView.player = player
Java
// Bind the player to the view. playerView.setPlayer(player);
Anda juga dapat menggunakan PlayerControlView
sebagai komponen mandiri, yang
berguna untuk kasus penggunaan hanya audio.
Penggunaan komponen UI bawaan ExoPlayer bersifat opsional. Untuk aplikasi video
yang mengimplementasikan UI-nya sendiri, target SurfaceView
, TextureView
,
SurfaceHolder
, atau Surface
masing-masing dapat ditetapkan menggunakan metode
setVideoSurfaceView
, setVideoTextureView
, setVideoSurfaceHolder
, dan
setVideoSurface
ExoPlayer. Metode addTextOutput
ExoPlayer dapat
digunakan untuk menerima teks yang harus dirender selama pemutaran.
Mengisi playlist dan menyiapkan pemutar
Di ExoPlayer, setiap bagian media direpresentasikan oleh MediaItem
. Untuk memutar
sebagian media, Anda harus mem-build MediaItem
yang sesuai, menambahkannya ke
pemutar, menyiapkan pemutar, dan memanggil play
untuk memulai pemutaran:
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 mendukung playlist secara langsung, sehingga Anda dapat mempersiapkan pemain dengan beberapa item media untuk diputar satu per satu:
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 dapat diperbarui selama pemutaran tanpa perlu menyiapkan pemutar lagi. Baca selengkapnya tentang cara mengisi dan memanipulasi playlist di halaman Playlist. Baca selengkapnya tentang berbagai opsi yang tersedia saat membuat item media, seperti memotong dan melampirkan file subtitel, di halaman Item media.
Mengontrol pemutar
Setelah pemutar disiapkan, pemutaran dapat dikontrol dengan memanggil metode pada pemutar. Berikut adalah beberapa metode yang paling umum digunakan:
play
danpause
memulai dan menjeda pemutaran.seekTo
memungkinkan pencarian di dalam media.hasPrevious
,hasNext
,previous
, dannext
memungkinkan navigasi dalam playlist.setRepeatMode
mengontrol apakah dan bagaimana media diulang.setShuffleModeEnabled
mengontrol pengacakan playlist.setPlaybackParameters
menyesuaikan kecepatan pemutaran dan tinggi nada audio.
Jika pemain terikat ke PlayerView
atau PlayerControlView
,
interaksi pengguna dengan komponen ini akan menyebabkan metode yang sesuai pada
pemain dipanggil.
Melepaskan pemutar
Pemutar harus melepaskan pemutar jika tidak lagi diperlukan, sehingga dapat membebaskan
resource terbatas, seperti dekoder video, agar dapat digunakan oleh aplikasi lain. Tindakan ini
dapat dilakukan dengan memanggil ExoPlayer.release
.