Başlarken

Basit kullanım alanları için ExoPlayer'ü kullanmaya başlamak, aşağıdaki adımları uygulamayı içerir:

  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. Oynamak için oynatıcıyı MediaItem ile hazırlayın.
  5. Bitirdiğinizde oynatıcıyı bırakın.

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

Bağımlılık olarak ExoPlayer ekleme

ExoPlayer modülleri ekleyin

AndroidX Media3'ü kullanmaya başlamanın en kolay yolu, uygulama modülünüzün build.gradle dosyasında ihtiyacınız olan kitaplıklara gradle bağımlılıkları eklemektir.

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

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"

Burada 1.4.1, tercih ettiğiniz sürümdür (sürüm notlarına bakarak en son sürümü bulabilirsiniz). Tüm modüller aynı sürümde olmalıdır.

AndroidX Media3, ek işlevler sağlamak için harici kitaplıklara bağlı kitaplık modüllerine sahiptir. Bazıları Maven deposundan kullanılabilirken bazılarının manuel olarak oluşturulması gerekir. Ayrıntılar için kitaplıklar dizine göz atın ve README dosyalarını inceleyin.

Kullanılabilir kitaplık modülleri hakkında daha fazla bilgiyi Google Maven AndroidX Media sayfasında bulabilirsiniz.

Java 8 desteğini etkinleştirme

Henüz etkinleştirilmediyse android bölümüne aşağıdakileri 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 sürümünüz 20 veya daha düşükse derleme hatalarını önlemek için multidex'i etkinleştirmeniz gerekir.

Oynatıcıyı oluşturma

Çeşitli özelleştirme seçenekleri sunan ExoPlayer.Builder kullanarak bir 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 not

ExoPlayer örneklerine tek bir uygulama iş parçacından erişilmelidir. Vakaların büyük çoğunluğu için bu, uygulamanın ana iş parçacığı olmalıdır. ExoPlayer'ın kullanıcı arayüzü bileşenleri veya IMA uzantısı kullanılı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 Looper ile 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 iş parçacığının bir Looper öğesi yoksa uygulamanın ana iş parçacığının Looper öğesi kullanılır. Her durumda, oynatıcıya erişilmesi gereken ileti dizisinin 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ş bir dizi kullanıcı arayüzü bileşeni sağlar. Bunlar arasında, bir PlayerControlView, bir SubtitleView ve videonun oluşturulduğu bir Surface içeren PlayerView yer alır. 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);

PlayerControlView'ü bağımsız bir bileşen olarak da kullanabilirsiniz. Bu, yalnızca sesli kullanım alanları için yararlıdır.

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 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 öğesini oynatmak için ilgili MediaItem öğesini oluşturmanız, oynatıcıya eklemeniz, oynatıcıyı hazırlamanız ve oynatmayı başlatmak için play işlevini ç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 desteklediğinden oynatıcıyı birden fazla medya öğesiyle birlikte birbiri ardına oynatılacak şekilde hazırlayabilirsiniz:

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 sırasında oynatma listesini güncellemek için oynatıcıyı tekrar hazırlamanız gerekmez. Oynatma listesini doldurma ve oynatma listesindeki öğeleri değiştirme hakkında daha fazla bilgiyi Oynatma listeleri sayfasında bulabilirsiniz. Kırpma ve altyazı dosyası ekleme gibi medya öğeleri oluştururken kullanılabilen farklı seçenekler 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 yöntemleri çağırarak kontrol edilebilir. En yaygın kullanılan yöntemlerden bazıları şunlardır:

  • play ve pause, oynatmayı başlatıp duraklatır.
  • seekTo, medya içinde arama yapılmasına olanak tanır.
  • hasPrevious, hasNext, previous ve next, oynatma listesinde gezinmenize olanak tanır.
  • setRepeatMode, medyanın tekrarlanıp tekrarlanmayacağını ve nasıl tekrarlanacağını kontrol eder.
  • setShuffleModeEnabled, oynatma listesinin karıştırılmasını kontrol eder.
  • setPlaybackParameters, oynatma hızını ve ses perdesini ayarlar.

Oynatıcı bir PlayerView veya PlayerControlView'a bağlıysa kullanıcının bu bileşenlerle etkileşime geçmesi, oynatıcıdaki ilgili yöntemlerin çağrılmasına neden olur.

Oynatıcıyı serbest bırakın

Artık gerekli olmadığında oynatıcıyı serbest bırakmak önemlidir. Böylece video kod çözücüler gibi sınırlı kaynakları diğer uygulamalar tarafından kullanılabilir hale getirebilirsiniz. Bu işlem için ExoPlayer.release numaralı telefonu arayabilirsiniz.