Aşamalı

Aşağıdaki kapsayıcı biçimlerindeki akışlar doğrudan ExoPlayer tarafından oynatılabilir. İçerilen ses ve video örnek biçimleri de desteklenmelidir (ayrıntılar için örnek biçimler bölümüne bakın).

Kapsayıcı biçimi Destekleniyor Yorumlar
MP4 EVET
M4 EVET
FMP4 EVET
WebM EVET
Matroska EVET
MP3 EVET Bazı yayınlarda yalnızca sabit bit hızıyla sarmalama kullanıldığında arama yapılabilir**
Ogg EVET Vorbis, Opus ve FLAC içerir
WAV EVET
MPEG-TS EVET
MPEG-PS EVET
FLV EVET Aranamaz*
ADTS (AAC) EVET Yalnızca sabit bit hızı sarma modu kullanılarak aranabilir**
FLAC EVET FLAC kitaplığını veya ExoPlayer kitaplığındaki FLAC ayıklayıcıyı kullanarak***
200.000 EVET Yalnızca sabit bit hızı sarma modu kullanılarak aranabilir**
JPEG hareketli fotoğraf EVET Yalnızca MP4 içeriği çıkarılır.

* Kapsayıcı, medya oynatıcının verimli bir şekilde arama yapmasına olanak tanıyan meta veriler (örneğin, örnek dizin) sağlamadığından arama işlevi desteklenmez. Sarma işlemi gerekiyorsa daha uygun bir kapsayıcı biçimi kullanmanızı öneririz.

** Bu ayıklayıcıların, sabit bir bit hızı varsayımı kullanarak yaklaşık sarmayı sağlamak için FLAG_ENABLE_CONSTANT_BITRATE_SEEKING işaretleri vardır. Bu işlev varsayılan olarak etkin değildir. Bu işlevi, destekleyen tüm ayıklayıcılar için etkinleştirmenin en basit yolu, burada açıklandığı gibi DefaultExtractorsFactory.setConstantBitrateSeekingEnabled kullanmaktır.

*** FLAC kitaplığı ayıklayıcı, ham ses çıkarır. Bu ses, tüm API düzeylerinde çerçeve tarafından işlenebilir. ExoPlayer kitaplığı FLAC ayıklayıcısı, FLAC ses karelerini çıkarır. Bu nedenle, bir FLAC kod çözücüye (ör. FLAC'yi işleyen MediaCodec kod çözücü (API düzeyi 27'den gerekir) veya FLAC özellikli FFmpeg kitaplığı) sahip olmanız gerekir. Uygulama, FLAC kitaplığıyla oluşturulduysa DefaultExtractorsFactory, uzantı ayıklayıcıyı kullanır. Aksi takdirde, ExoPlayer kitaplığı ayıklayıcıyı kullanır.

MediaItem kullanma

Progresif bir akışı oynatmak için medya URI'si ile bir MediaItem oluşturun ve bunu oynatıcıya iletin.

Kotlin

// Create a player instance.
val player = ExoPlayer.Builder(context).build()
// Set the media item to be played.
player.setMediaItem(MediaItem.fromUri(progressiveUri))
// Prepare the player.
player.prepare()

Java

// Create a player instance.
ExoPlayer player = new ExoPlayer.Builder(context).build();
// Set the media item to be played.
player.setMediaItem(MediaItem.fromUri(progressiveUri));
// Prepare the player.
player.prepare();

ProcessiveMediaSource'u kullanma

Daha fazla özelleştirme seçeneği için ProgressiveMediaSource oluşturabilir ve MediaItem yerine doğrudan oynatıcıya gidebilirsiniz.

Kotlin

// Create a data source factory.
val dataSourceFactory: DataSource.Factory = DefaultHttpDataSource.Factory()
// Create a progressive media source pointing to a stream uri.
val mediaSource: MediaSource =
ProgressiveMediaSource.Factory(dataSourceFactory)
    .createMediaSource(MediaItem.fromUri(progressiveUri))
// Create a player instance.
val player = ExoPlayer.Builder(context).build()
// Set the media source to be played.
player.setMediaSource(mediaSource)
// Prepare the player.
player.prepare()

Java

// Create a data source factory.
DataSource.Factory dataSourceFactory = new DefaultHttpDataSource.Factory();
// Create a progressive media source pointing to a stream uri.
MediaSource mediaSource =
    new ProgressiveMediaSource.Factory(dataSourceFactory)
        .createMediaSource(MediaItem.fromUri(progressiveUri));
// Create a player instance.
ExoPlayer player = new ExoPlayer.Builder(context).build();
// Set the media source to be played.
player.setMediaSource(mediaSource);
// Prepare the player.
player.prepare();

Oynatmayı özelleştirme

ExoPlayer, oynatma deneyimini uygulamanızın ihtiyaçlarına uyarlamanız için çeşitli yollar sunar. Örnekler için Özelleştirme sayfasına bakın.