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.