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.