Başlarken

Basit kullanım alanları için ExoPlayer aracını kullanmaya başlamak, aşağıdaki adımların uygulanmasından oluşur:

  1. ExoPlayer'ı projenize bağımlılık olarak ekleyin.
  2. ExoPlayer örneği oluşturun.
  3. Oynatıcıyı bir görünüme ekleyin (video çıkışı ve kullanıcı girişi için).
  4. Oynatıcıyı bir MediaItem ile oynamaya hazırlayın.
  5. Bittiğinde oynatıcıyı bırakın.

Bu adımlar aşağıda daha ayrıntılı olarak açıklanmıştır. Tam bir örnek için ana demo uygulamasındaki PlayerActivity bölümüne bakın.

ExoPlayer'ı bağımlılık olarak ekleyin

ExoPlayer modülleri ekle

AndroidX Media3'ü kullanmaya başlamanın en kolay yolu, uygulama modülünüzün build.gradle dosyasına ihtiyaç duyduğunuz kitaplıklara gradle bağımlılıkları eklemektir.

Örneğin, DASH oynatma desteğine ve kullanıcı arayüzü bileşenlerine sahip ExoPlayer'a güvenmek için modüllere aşağıdaki gibi bağımlılıklar ekleyebilirsiniz:

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")

Modern

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"

Burada 1.3.1 tercih ettiğiniz sürümdür (en son sürüme sürüm notlarına bakarak ulaşabilirsiniz). Tüm modüller aynı sürüm olmalıdır.

AndroidX Media3, ek işlevsellik sağlamak için harici kitaplıklara dayalı kitaplık modüllerine sahiptir. Bazıları Maven deposundan kullanılabilirken bazılarının manuel olarak oluşturulması gerekir. Kitaplıklar dizinine göz atın ve ayrıntılar için tek tek README'lere bakın.

Kullanabileceğiniz kitaplık modülleri hakkında daha fazla bilgiyi Google Maven AndroidX Media sayfasında bulabilirsiniz.

Java 8 desteğini etkinleştirme

Etkinleştirilmemişse android bölümüne aşağıdaki kodu ekleyerek ExoPlayer'a bağlı tüm build.gradle dosyalarında Java 8 desteğini etkinleştirmeniz gerekir:

compileOptions {
  targetCompatibility JavaVersion.VERSION_1_8
}

Multidex'i etkinleştirme

Gradle minSdkVersion değeriniz 20 veya daha düşükse derleme hatalarını önlemek için multidex'i etkinleştirmeniz gerekir.

Oynatıcıyı oluşturma

ExoPlayer.Builder kullanarak birçok özelleştirme seçeneği sunan ExoPlayer örneği oluşturabilirsiniz. Aşağıdaki kod, örnek oluşturmanın en basit örneğidir.

Kotlin

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

Java

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

İleti dizisiyle ilgili bir not

ExoPlayer örneklerine tek bir uygulama iş parçacığından erişilmelidir. Çoğu durumda bu, uygulamanın ana iş parçacığı olmalıdır. ExoPlayer'ın kullanıcı arayüzü bileşenlerini veya IMA uzantısını kullanırken uygulamanın ana iş parçacığının kullanılması zorunludur.

Bir ExoPlayer örneğine erişilmesi gereken iş parçacığı, oynatıcı oluşturulurken bir Looper iletilerek açıkça belirtilebilir. Looper belirtilmemişse oynatıcının oluşturulduğu iş parçacığının Looper öğesi kullanılır veya bu ileti dizisinde bir Looper yoksa uygulamanın ana iş parçacığının Looper kullanılır. Her durumda, oynatıcıya erişilmesi gereken iş parçacığının Looper değeri, Player.getApplicationLooper kullanılarak sorgulanabilir.

ExoPlayer'ın iş parçacığı modeli hakkında daha fazla bilgi için ExoPlayer Javadoc'un "İş parçacığı modeli" bölümüne bakın.

Oynatıcıyı bir görünüme ekleme

ExoPlayer kitaplığı, medya oynatma için önceden oluşturulmuş çeşitli kullanıcı arayüzü bileşenleri sunar. Bunlar, videonun oluşturulduğu PlayerControlView, SubtitleView ve Surface içeren PlayerView öğelerini içerir. PlayerView, uygulamanızın düzen xml dosyasına eklenebilir. Örneğin, oynatıcıyı görünüme bağlamak için:

Kotlin

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

Java

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

Yalnızca ses içeren kullanım alanları için faydalı olan PlayerControlView, bağımsız bir bileşen olarak da kullanılabilir.

ExoPlayer'ın önceden oluşturulmuş kullanıcı arayüzü bileşenlerinin kullanımı isteğe bağlıdır. Kendi kullanıcı arayüzünü uygulayan video uygulamaları için hedef SurfaceView, TextureView, SurfaceHolder veya Surface hedefi, sırasıyla ExoPlayer'ın setVideoSurfaceView, setVideoTextureView, setVideoSurfaceHolder vesetVideoSurface yöntemleri kullanılarak ayarlanabilir. ExoPlayer'ın addTextOutput yöntemi, oynatma sırasında oluşturulması gereken altyazıları almak için kullanılabilir.

Oynatma listesini doldurma ve oynatıcıyı hazırlama

ExoPlayer'da her medya parçası bir MediaItem ile temsil edilir. Bir medya parçasını oynatmak için ilgili MediaItem oluşturup oynatıcıya eklemeniz, oynatıcıyı hazırlamanız ve oynatmayı başlatmak için play yöntemini çağırmanız gerekir:

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, oynatma listelerini doğrudan destekler. Bu nedenle, oynatıcıyı birbiri ardına oynatılacak birden fazla medya öğesiyle hazırlamak mümkündür:

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

Oynatma listesi, oynatıcıyı tekrar hazırlamaya gerek kalmadan oynatma sırasında güncellenebilir. Oynatma listeleri sayfasında oynatma listesini doldurma ve değiştirme hakkında daha fazla bilgi edinin. Medya öğeleri oluştururken kullanılabilen farklı seçenekler (ör. altyazı dosyası kırpma ve ekleme) hakkında daha fazla bilgiyi Medya öğeleri sayfasında bulabilirsiniz.

Oynatıcıyı kontrol etme

Oynatıcı hazırlandıktan sonra, oynatma, oynatıcıdaki çağrı yöntemleriyle kontrol edilebilir. En sık kullanılan yöntemlerden bazıları şunlardır:

  • play ve pause, oynatmayı başlatıp duraklatıyor.
  • seekTo, medyada sarmaya izin verir.
  • hasPrevious, hasNext, previous ve next, oynatma listesinde gezinmeye izin verir.
  • setRepeatMode, medyanın döngüye alınıp alınmayacağını ve döngüye alınma şeklini kontrol eder.
  • setShuffleModeEnabled, oynatma listesinin karıştırılmasını kontrol eder.
  • setPlaybackParameters, oynatma hızını ve ses tonunu ayarlar.

Oynatıcı bir PlayerView veya PlayerControlView öğesine bağlıysa bu bileşenlerle kullanıcı etkileşimi, oynatıcıda karşılık gelen yöntemlerin çağrılmasına neden olur.

Oynatıcıyı bırakma

Video kod çözücüleri gibi sınırlı kaynakları diğer uygulamaların kullanımına açmak için oynatıcıyı artık ihtiyaç duyulmadığında serbest bırakmak önemlidir. Bunu, ExoPlayer.release yöntemini çağırarak yapabilirsiniz.