Desteklenen biçimler

ExoPlayer'ın desteklediği biçimleri tanımlarken, "medya biçimlerinin" birden çok düzeyde tanımlandığını unutmamak önemlidir. En düşük seviyeden en yükseğe doğru şunlardır:

  • Bağımsız medya örneklerinin biçimi (ör. bir video karesi veya ses karesi). Bunlar örnek biçimlerdir. Tipik bir video dosyasında, biri video (ör. H.264) ve diğeri ses (ör. AAC) olmak üzere en az iki örnek biçimde medya içereceğini unutmayın.
  • Medya örneklerini ve ilişkili meta verileri barındıran kapsayıcının biçimi. Bunlar kapsayıcı biçimleridir. Medya dosyaları, genellikle dosya uzantısıyla belirtilen tek bir kapsayıcı biçimine sahiptir (örneğin, MP4). Bazı yalnızca ses biçimlerinde (ör. MP3) örnek ve kapsayıcı biçimleri aynı olabilir.
  • DASH, SmoothStreaming ve HLS gibi uyarlanabilir akış teknolojileri. Bunlar, olduğu gibi medya biçimleri değildir, ancak yine de ExoPlayer'ın sağladığı destek düzeyini tanımlamak gerekir.

Aşağıdaki bölümler, en yüksekten en düşüğe doğru her seviye için ExoPlayer'ın desteğini tanımlar. Son iki bölümde, bağımsız altyazı biçimleri ve HDR video oynatma desteği açıklanmaktadır.

Uyarlanabilir yayın

DASH

ExoPlayer, DASH'i birden fazla kapsayıcı biçimiyle destekler. Medya akışları ayrıştırılmalıdır. Diğer bir deyişle video, ses ve metin DASH manifestinde farklı AdaptationSet öğelerinde tanımlanmalıdır (CEA-608, aşağıdaki tabloda açıklanan bir istisnadır). İçerdiği ses ve video örnek biçimleri de desteklenmelidir (ayrıntılar için örnek biçimler bölümüne bakın).

Özellik Destekleniyor Yorumlar
Kapsayıcılar
FMP4 EVET Yalnızca tekilleştirilmiş akışlar
WebM EVET Yalnızca tekilleştirilmiş akışlar
Matroska EVET Yalnızca tekilleştirilmiş akışlar
MPEG-TS HAYIR Planlanmış destek yok
Kapalı altyazılar
TTML EVET Ham veya ISO/IEC 14496-30'a göre FMP4'e yerleştirilmiştir
WebVTT EVET Ham veya ISO/IEC 14496-30'a göre FMP4'e yerleştirilmiştir
CEA-608 EVET SCTE erişilebilirlik tanımlayıcıları kullanılarak sinyal verildiğinde FMP4'e yerleştirilir
CEA-708 EVET SCTE erişilebilirlik tanımlayıcıları kullanılarak sinyal verildiğinde FMP4'e yerleştirilir
Meta veri
EMSG meta verileri EVET FMP4'e yerleştirilmiş
İçerik koruması
Widevine EVET "cenc" şeması: API 19+; "cbcs" şeması: API 25+
PlayHazır SL2000 EVET Android TV, yalnızca "cenc" şeması
Anahtarı Temizle EVET API 21+, yalnızca "cenc" şeması
Canlı oynatma
Düzenli canlı oynatma EVET
Ultra düşük gecikmeli CMAF canlı oynatma EVET
Common Media Client Data (CMCD) EVET Entegrasyon Rehberi

SmoothStreaming

ExoPlayer, SmoothStreaming'i FMP4 kapsayıcı biçimiyle destekler. Medya akışları ayrıştırılmalıdır. Diğer bir deyişle video, ses ve metin, SmoothStreaming manifest dosyasında farklı StreamIndex öğelerinde tanımlanmalıdır. İçerdiği ses ve video örnek biçimleri de desteklenmelidir (ayrıntılar için örnek biçimler bölümüne bakın).

Özellik Destekleniyor Yorumlar
Kapsayıcılar
FMP4 EVET Yalnızca tekilleştirilmiş akışlar
Kapalı altyazılar
TTML EVET FMP4'e yerleştirilmiş
İçerik koruması
PlayHazır SL2000 EVET Yalnızca Android TV
Canlı oynatma
Düzenli canlı oynatma EVET
Common Media Client Data (CMCD) EVET Entegrasyon Rehberi

HLS

ExoPlayer, birden fazla kapsayıcı biçimiyle HLS'yi destekler. İçerdiği ses ve video örnek biçimleri de desteklenmelidir (ayrıntılar için örnek biçimler bölümüne bakın). HLS içerik üreticilerinin, burada açıklandığı gibi yüksek kaliteli HLS akışları oluşturmalarını önemle tavsiye ederiz.

Özellik Destekleniyor Yorumlar
Kapsayıcılar
MPEG-TS EVET
FMP4/CMAF EVET
ADTS (AAC) EVET
MP3 EVET
Kapalı altyazılar
CEA-608 EVET
CEA-708 EVET
WebVTT EVET
Meta veri
Kimlik 3 EVET
SCTE-35 HAYIR
İçerik koruması
AES-128 EVET
Örnek AES-128 HAYIR
Widevine EVET API 19+ ("cenc" şeması) ve 25+ ("cbcs" şeması)
PlayHazır SL2000 EVET Yalnızca Android TV
Sunucu kontrolü
Delta güncellemeleri EVET
Oynatma listesinin yeniden yüklenmesi engelleniyor EVET
Önceden yükleme ipuçlarının yüklenmesini engelleme EVET Uzunluğu tanımlanmamış bayt aralıkları hariç
Canlı oynatma
Düzenli canlı oynatma EVET
Düşük gecikmeli HLS (Apple) EVET
Düşük gecikmeli HLS (Topluluk) HAYIR
Common Media Client Data (CMCD) EVET Entegrasyon Rehberi

Progresif kapsayıcı biçimleri

Aşağıdaki kapsayıcı biçimlerindeki akışlar doğrudan ExoPlayer tarafından oynatılabilir. İçerdiği 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
M4A EVET
FMP4 EVET
WebM EVET
Matroska EVET
MP3 EVET Bazı akışlar yalnızca sabit bit hızıyla sarmalama kullanılarak aranabilir**
Ogg EVET Vorbis, Opus ve FLAC içerir
WAV EVET
MPEG-TS EVET
MPEG-PS EVET
FLV EVET Aranabilir değil*
ADTS (AAC) EVET Yalnızca sabit bit hızıyla arama kullanılarak aranabilir**
FLAC EVET FLAC kitaplığını veya ExoPlayer kitaplığındaki FLAC ayıklayıcıyı kullanma***
BAE dirhemi EVET Yalnızca sabit bit hızıyla arama kullanılarak aranabilir**
JPEG hareketli fotoğraf EVET Yalnızca MP4 içeriği çıkarılır.

* Kapsayıcı, medya oynatıcının etkili bir şekilde arama yapmasına olanak tanıyacak meta veriler (ör. örnek dizin) sağlamadığından arama özelliği desteklenmez. Arama gerekiyorsa daha uygun bir kapsayıcı biçimi kullanmanızı öneririz.

** Bu ayıklayıcıların, sabit bit hızı varsayımı kullanarak yaklaşık aramayı etkinleştirmek 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ı, çerçeve tarafından tüm API düzeylerinde işlenebilecek ham ses çıkarır. ExoPlayer kitaplığı FLAC ayıklayıcı, FLAC ses çerçeveleri üretir. 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 etkin halde FFmpeg kitaplığı) sahip olunması gerekir. Uygulama FLAC kitaplığıyla oluşturulmuşsa DefaultExtractorsFactory, uzantı çıkarıcıyı kullanır. Aksi takdirde, ExoPlayer kitaplığı ayıklayıcıyı kullanır.

RTSP

ExoPlayer hem canlı hem de isteğe bağlı RTSP'yi destekler. Desteklenen örnek biçimler ve ağ türleri aşağıda listelenmiştir.

Desteklenen örnek biçimler

  • H264 (SDP medya açıklaması, kod çözücüyü başlatma için fmtp özelliğinde SPS/PPS verilerini içermelidir).
  • AAC (ADTS bit akışıyla).
  • AC3.

Desteklenen ağ türleri

  • UDP unicast üzerinden RTP (çoklu yayın desteklenmez).
  • TCP kullanılarak aralıklı RTSP, RTSP üzerinden RTP.

Örnek biçimler

ExoPlayer, varsayılan olarak Android'in platform kod çözücülerini kullanır. Bu nedenle, desteklenen örnek biçimler ExoPlayer yerine temeldeki platforma bağlıdır. Android cihazlar tarafından desteklenen örnek biçimlerle ilgili dokümanlar için Desteklenen medya biçimleri bölümüne bakın. Her cihazın, listelenenler dışında ek biçimleri destekleyebileceğini unutmayın.

ExoPlayer, Android'in platform kod çözücülerine ek olarak yazılım kod çözücü uzantılarını da kullanabilir. Bunlar, manuel olarak oluşturulmalı ve bunlardan yararlanmak isteyen projelere dahil edilmelidir. Şu anda AV1, VP9, FLAC, Opus ve FFmpeg için yazılım kod çözücü kitaplıkları sunuyoruz.

FFmpeg kitaplığı

FFmpeg kitaplığı, çeşitli farklı ses örneği biçimlerinin kodunu çözmeyi destekler. Kitaplığın README.md dosyasında belirtildiği gibi, kitaplığı oluştururken hangi kod çözücülerin dahil edileceğini seçebilirsiniz. Aşağıdaki tabloda, ses örneği biçiminden karşılık gelen FFmpeg kod çözücü adına bir eşleme gösterilmektedir.

Örnek biçim Kod çözücü adları
Vorbis Vorbis
Opus opus
FLAC flac
ALAC Alac
PCM μ-yasaları pcm_mulaw
PCM A kanunu pcm_alaw
MP1, MP2, MP3 mp3
AMR ve NB Amrnb
AMR-WB amrwb
AAC AC
AC-3 ac3
E-AC-3 aa3
DTS, DTS-HD DCA
TrueHD mlp truehd

Bağımsız altyazı biçimleri

ExoPlayer, çeşitli biçimlerdeki bağımsız altyazı dosyalarını destekler. Altyazı dosyaları, medya öğeleri sayfasında açıklandığı gibi başka cihazdan yüklenebilir.

Kapsayıcı biçimi Destekleniyor MIME türü
WebVTT EVET MimeTypes.TEXT_VTT
TTML / SMPTE-TT EVET MimeTypes.APPLICATION_TTML
SubRip EVET MimeTypes.APPLICATION_SUBRIP
SubStationAlpha (SSA/ASS) EVET MimeTypes.TEXT_SSA

HDR video oynatma

ExoPlayer, MP4'te Dolby Vision ve Matroska/WebM'de HDR10+ da dahil olmak üzere çeşitli container'larda yüksek dinamik aralıklı (HDR) videoların ayıklama işlemini yürütür. HDR içeriğin kodunun çözülmesi ve görüntülenmesi, Android platformu ve cihaz tarafından sağlanan desteğe bağlıdır. Android sürümlerinde HDR kod çözme/görüntüleme özelliklerini ve HDR desteğinin sınırlamalarını kontrol etme hakkında bilgi edinmek için HDR Video Oynatma bölümüne bakın.

Belirli bir codec profili için destek gerektiren bir HDR akışı oynatırken, aynı MIME türü için codec listesinin üst sıralarında aynı MIME türü için başka bir kod çözücü görünse bile ExoPlayer'ın varsayılan MediaCodec seçicisi bu profili destekleyen bir kod çözücü seçer. Bu, akışın aynı MIME türü için bir donanım kod çözücüsünün yeteneklerini aştığı durumlarda bir yazılım kod çözücünün seçilmesine neden olabilir.