Basit kullanım alanları için ExoPlayer
'ü kullanmaya başlamak, aşağıdaki adımları uygulamayı içerir:
- ExoPlayer'ı projenize bağımlılık olarak ekleyin.
ExoPlayer
örneği oluşturun.- Oynatıcıyı bir görünüme ekleyin (video çıkışı ve kullanıcı girişi için).
- Oynamak için oynatıcıyı
MediaItem
ile hazırlayın. - Bitirdiğinizde 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 ekleme
ExoPlayer modülleri ekleme
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 diğerleri manuel olarak oluşturulmalıdır. 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();
Konu dizileriyle ilgili not
ExoPlayer örneklerine tek bir uygulama iş parçacığından erişilmelidir. Çoğu durumda bu, uygulamanın ana iş akışı 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 Looper
ile açıkça belirtilebilir. Looper
belirtilmezse oynatıcının oluşturulduğu mesaj dizisinin Looper
değeri kullanılır. Söz konusu mesaj dizisinde Looper
yoksa uygulamanın ana mesaj dizisinin Looper
değeri 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'ının "İş 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. Uygulamanızın layout.xml dosyasına PlayerView
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 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üzlerini uygulayan video uygulamaları için SurfaceView
, TextureView
, SurfaceHolder
veya Surface
hedefi, ExoPlayer'ın sırasıyla setVideoSurfaceView
, setVideoTextureView
, setVideoSurfaceHolder
ve setVideoSurface
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 destekler. Bu nedenle, oynatıcıyı birbiri ardına oynatılacak birden fazla medya öğesiyle 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. Medya öğeleri sayfasında, medya öğeleri oluştururken kullanılabilen farklı seçenekler (ör. kırpma ve altyazı dosyası ekleme) hakkında daha fazla bilgi edinin.
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
vepause
, oynatmayı başlatır ve duraklatır.seekTo
, medya içinde arama yapılmasına olanak tanır.hasPrevious
,hasNext
,previous
venext
, 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.
Oyuncuyu serbest bırakma
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.