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 (bkz. Örnek biçimler bölümüne bakın). Görüntü kapsayıcısı ve biçim desteği için bkz. Resimler.
Kapsayıcı biçimi | Destekleniyor | Yorumlar |
---|---|---|
MP4 | EVET | |
M4A | EVET | |
FMP4 | EVET | |
WebM | EVET | |
Matroska | EVET | |
MP3 | EVET | Bazı akışlar yalnızca sabit bit hızı araması kullanılarak aranabilir** |
Ogg | EVET | Vorbis, Opus ve FLAC içerir |
WAV | EVET | |
MPEG-TS | EVET | |
MPEG-PS | EVET | |
FLV | EVET | Atlanabilir değil* |
ADTS (AAC) | EVET | Yalnızca sabit bit hızı araması kullanılarak aranabilir** |
FLAC | EVET | FLAC kitaplığını veya ExoPlayer kitaplığındaki FLAC ayıklayıcısını kullanarak*** |
AMR | EVET | Yalnızca sabit bit hızı araması kullanılarak aranabilir** |
* Kapsayıcı meta veri (örneğin, örnek dizin) kullanarak bir medya oynatıcının verimli bir şekilde arama yapmasını sağlar. Arama yapılması gerekiyorsa daha uygun bir kapsayıcı biçimi kullanmanızı öneririz.
** Bu ayıklayıcılarda FLAG_ENABLE_CONSTANT_BITRATE_SEEKING
işareti vardır
Sabit bit hızı varsayımı kullanarak yaklaşık sarma özelliğini etkinleştirme. Bu işlev varsayılan olarak etkin değildir. Bunu etkinleştirmenin en basit yolu
destekleyen tüm ayıklayıcılar için otomatik olarak
Açıklandığı şekliyle DefaultExtractorsFactory.setConstantBitrateSeekingEnabled
burada bulabilirsiniz.
*** FLAC kitaplığı ayıklayıcısı, işlenebilecek ham ses çıkışını sağlar.
tüm API düzeylerinde
çerçeveye göre değerlendirebiliriz. ExoPlayer kitaplığı FLAC çıkarıcı, FLAC ses çerçeveleri çıkışı verir ve bu nedenle bir FLAC kod çözücüye (ör. FLAC'ı işleyen bir MediaCodec
kod çözücü (API düzeyi 27'den itibaren gereklidir) veya FLAC'ın etkin olduğu FFmpeg kitaplığı) ihtiyaç duyar. DefaultExtractorsFactory
,
uygulama FLAC kitaplığı ile oluşturulmuşsa uzantı ayıklayıcıyı kullanın.
Aksi takdirde, ExoPlayer kitaplığı ayıklayıcısını kullanır.
MediaItem'i kullanma
İlerleyen bir yayın oynatmak için medya URI'si içeren bir MediaItem
oluşturun ve 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();
ProgressiveMediaSource'u kullanma
Daha fazla özelleştirme seçeneği için bir ProgressiveMediaSource
ve
oyuncuya MediaItem
yerine doğrudan iletebilir.
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 göre özelleştirmenize olanak tanıyan birden fazla yöntem sunar. Örnekler için Özelleştirme sayfasına bakın.