Aşağıdaki kapsayıcı biçimlerindeki akışlar doğrudan ExoPlayer tarafından oynatılabilir. İçerilen ses ve video örnek biçimlerinin de desteklenmesi gerekir (ayrıntılar için Örnek biçimler bölümüne bakın). Resim kapsayıcısı ve biçim desteği için Resimler bölümüne bakın.
| Kapsayıcı biçimi | Destekleniyor | Yorumlar |
|---|---|---|
| MP4 | EVET | |
| M4A | EVET | |
| FMP4 | EVET | |
| WebM | EVET | |
| Matroska | EVET | |
| MP3 | EVET | Bazı akışlarda yalnızca sabit bit hızlı arama kullanılarak arama yapılabilir.** |
| Ogg | EVET | Vorbis, Opus ve FLAC içeren |
| WAV | EVET | |
| MPEG-TS | EVET | |
| MPEG-PS | EVET | |
| FLV | EVET | Sarılamaz* |
| ADTS (AAC) | EVET | Yalnızca sabit bit hızlı arama kullanılarak aranabilir** |
| FLAC | EVET | FLAC kitaplığını veya ExoPlayer kitaplığındaki FLAC çıkarıcıyı kullanma*** |
| AMR | EVET | Yalnızca sabit bit hızlı arama kullanılarak aranabilir** |
* 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 desteklenmez. Arama gerekiyorsa daha uygun bir kapsayıcı biçimi kullanmanızı öneririz.
** Bu ayıklayıcılar, sabit bit hızı varsayımı kullanarak yaklaşık arama özelliğini etkinleştirmek için FLAG_ENABLE_CONSTANT_BITRATE_SEEKING işaretlerine sahiptir. 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ısı, tüm API düzeylerinde çerçeve tarafından işlenebilen ham ses çıkışı verir. ExoPlayer kitaplığı FLAC çıkarıcı, FLAC ses çerçeveleri çıkarır ve bu nedenle FLAC kod çözücünün (örneğin, FLAC'ı işleyen bir MediaCodec kod çözücü (API düzeyi 27'den itibaren gereklidir) veya FLAC'ın etkinleştirildiği FFmpeg kitaplığı) olmasını gerektirir. Uygulama FLAC kitaplığı ile oluşturulduysa DefaultExtractorsFactory, uzantı ayıklayıcıyı kullanır.
Aksi takdirde, ExoPlayer kitaplığı ayıklayıcısı kullanılır.
MediaItem kullanma
Aşamalı bir akışı oynatmak için medya URI'siyle 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();
ProgressiveMediaSource'u kullanma
Daha fazla özelleştirme seçeneği için ProgressiveMediaSource oluşturabilir ve bunu MediaItem yerine doğrudan oynatıcıya iletebilirsiniz.
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 uyarlamanız için birden fazla yol sunar. Örnekler için Özelleştirme sayfasına bakın.