Memulai

Untuk kasus penggunaan sederhana, memulai ExoPlayer terdiri dari menerapkan langkah-langkah berikut:

  1. Menambahkan ExoPlayer sebagai dependensi ke project Anda.
  2. Buat instance ExoPlayer.
  3. Pasang pemutar ke tampilan (untuk output video dan input pengguna).
  4. Siapkan pemain dengan MediaItem untuk bermain.
  5. Lepaskan pemutar jika sudah selesai.

Langkah-langkah ini dijelaskan lebih detail di bawah. Untuk contoh lengkap, lihat PlayerActivity di aplikasi demo utama.

Menambahkan ExoPlayer sebagai dependensi

Menambahkan modul ExoPlayer

Cara termudah untuk mulai menggunakan AndroidX Media3 adalah dengan menambahkan gradle dependensi pada library yang diperlukan dalam file build.gradle aplikasi Anda ruang lingkup modul ini.

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.4.1")
implementation("androidx.media3:media3-exoplayer-dash:1.4.1")
implementation("androidx.media3:media3-ui:1.4.1")

Groovy

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"

dengan 1.4.1 adalah versi yang Anda inginkan (versi terbaru dapat ditemukan oleh baca catatan rilis). Semua modul harus memiliki versi yang sama.

AndroidX Media3 memiliki modul library yang bergantung pada library eksternal untuk menyediakan fungsi tambahan. Beberapa yang tersedia dari repositori Maven, sedangkan yang lainnya harus dibuat secara manual. Jelajahi direktori library dan lihat setiap README untuk mengetahui detailnya.

Informasi selengkapnya tentang modul library yang tersedia dapat ditemukan di Halaman AndroidX Media Maven Google.

Mengaktifkan dukungan Java 8

Jika belum diaktifkan, Anda harus mengaktifkan dukungan Java 8 di semua build.gradle yang bergantung pada ExoPlayer, dengan menambahkan berikut ini ke bagian android:

compileOptions {
  targetCompatibility JavaVersion.VERSION_1_8
}

Mengaktifkan multidex

Jika minSdkVersion Gradle Anda 20 atau lebih rendah, Anda harus mengaktifkan multidex secara berurutan 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 dari 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, ini harus berupa thread utama aplikasi. Menggunakan thread utama aplikasi adalah persyaratan saat menggunakan komponen UI ExoPlayer atau ekstensi IMA.

Thread yang harus diakses instance ExoPlayer dapat secara eksplisit ditentukan dengan meneruskan Looper saat membuat pemutar. Jika tidak ada Looper yang ditentukan, maka Looper thread tempat pemutar dibuat digunakan, atau jika thread tersebut tidak memiliki Looper, Looper dari thread utama aplikasi digunakan. Dalam semua kasus, Looper thread dari yang harus diakses oleh pemutar, dapat dikueri menggunakan Player.getApplicationLooper.

Untuk informasi selengkapnya tentang model threading ExoPlayer, lihat "Model threading" pada Javadoc ExoPlayer.

Melampirkan pemutar ke tampilan

Library ExoPlayer menyediakan berbagai komponen UI bawaan untuk media pemutaran. Ini termasuk PlayerView, yang mengenkapsulasi PlayerControlView, SubtitleView, dan Surface yang menjadi 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, berguna untuk kasus penggunaan khusus audio.

Penggunaan komponen UI bawaan ExoPlayer bersifat opsional. Untuk aplikasi video yang mengimplementasikan UI-nya sendiri, target SurfaceView, TextureView, SurfaceHolder atau Surface dapat disetel menggunakan ExoPlayer setVideoSurfaceView, setVideoTextureView, setVideoSurfaceHolder, dan setVideoSurface. 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 media, Anda perlu membuat 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 menyiapkan pemutar dengan beberapa item media yang akan 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 pemain lagi. Baca selengkapnya tentang cara mengisi dan memanipulasi playlist di Halaman playlist. Baca selengkapnya tentang berbagai opsi yang tersedia saat membuat item media, seperti kliping dan melampirkan file subjudul, pada Halaman item media.

Mengontrol pemutar

Setelah pemutar siap, pemutaran dapat dikontrol dengan memanggil metode pada pemutar. Berikut adalah beberapa metode yang paling umum digunakan:

  • play dan pause memulai dan menjeda pemutaran.
  • seekTo memungkinkan pencarian di dalam media.
  • hasPrevious, hasNext, previous, dan next memungkinkan navigasi melalui playlist.
  • setRepeatMode mengontrol apakah dan bagaimana media di-loop.
  • setShuffleModeEnabled mengontrol pengacakan playlist.
  • setPlaybackParameters menyesuaikan kecepatan pemutaran dan pitch audio.

Jika pemain terikat ke PlayerView atau PlayerControlView, maka interaksi pengguna dengan komponen ini akan menyebabkan metode yang sesuai pada pemain yang akan dipanggil.

Melepaskan pemutar

Penting untuk melepaskan pemutar saat tidak lagi diperlukan, untuk mengosongkan sumber daya terbatas seperti dekoder video untuk digunakan oleh aplikasi lain. Ini dapat dilakukan dengan memanggil ExoPlayer.release.