Başlarken

Basit kullanım alanları için ExoPlayer kullanmaya başlamak için aşağıdaki adımları uygulamanız gerekir:

  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. Oyuncuyu 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çıklanmaktadı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şenleriyle 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.3.1")
implementation("androidx.media3:media3-exoplayer-dash:1.3.1")
implementation("androidx.media3:media3-ui:1.3.1")

Eski

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"

Bu durumda tercih ettiğiniz sürüm 1.3.1'dir (en son sürüme sürüm notlarına başvurarak ulaşabilirsiniz). 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ı olan 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 README'leri ayrı ayrı inceleyin.

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 ExoPlayer'a bağlı tüm build.gradle dosyaları için Java 8 desteğini etkinleştirmeniz gerekir. Bunun için android bölümüne şunu ekleyin:

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

Ç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.

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 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 iş parçacığının Looper öğesi, 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, videonun üzerinde oluşturulduğu PlayerControlView, SubtitleView ve Surface öğelerini içeren PlayerView 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);

PlayerControlView öğesini bağımsız bir bileşen olarak da kullanabilirsiniz. Bu bileşen, yalnızca ses kullanım alanlarında kullanışlı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. Oynatma sırasında oluşturulması gereken altyazıları almak için ExoPlayer'ın addTextOutput yöntemi 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 buna karşılık gelen bir MediaItem oluşturmanız, oynatıcıya eklemeniz, oynatıcıyı hazırlamanız ve oynatmayı başlatmak üzere 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 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 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. 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 ç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ır.
  • seekTo, medya içinde sarmaya olanak tanır.
  • hasPrevious, hasNext, previous ve next, oynatma listesinde gezinmeye olanak tanır.
  • setRepeatMode, medyanın döngü halinde olup olmadığını ve nasıl döngüye alınacağını kontrol eder.
  • setShuffleModeEnabled, oynatma listesi karıştırmayı kontrol eder.
  • setPlaybackParameters, oynatma hızını ve ses perdesini ayarlar.

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

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

Video kod çözücüler gibi sınırlı kaynakları diğer uygulamaların kullanımına açmak için oynatıcıyı artık ihtiyaç duymadığında serbest bırakmak önemlidir. Bu işlem, ExoPlayer.release aranarak yapılabilir.