Format yang didukung

Saat menentukan format yang didukung ExoPlayer, penting untuk dicatat bahwa "format media" ditentukan pada beberapa level. Dari tingkat terendah hingga tertinggi, yaitu:

  • Format masing-masing sampel media (seperti frame video atau frame audio). Berikut adalah format contoh. Perhatikan bahwa file video biasa akan memuat media dalam minimal dua format sampel; satu untuk video (misalnya, H.264) dan satu untuk audio (misalnya, AAC).
  • Format penampung yang menampung sampel media dan terkait {i>metadata<i}. Ini adalah format penampung. File media memiliki satu penampung (misalnya, MP4), yang biasanya ditunjukkan dengan ekstensi file. Catatan bahwa untuk sebagian format khusus audio (misalnya, MP3), format sampel dan kontainer mungkin sama.
  • Teknologi streaming adaptif seperti DASH, SmoothStreaming, dan HLS. Ini bukan format media seperti itu. Namun, Anda tetap perlu menentukan tingkat dukungan yang disediakan ExoPlayer.

Bagian berikut mendefinisikan dukungan ExoPlayer di setiap level, dari yang tertinggi hingga dan nilai terendah. Dua bagian terakhir menjelaskan dukungan untuk format subtitel mandiri dan pemutaran video HDR.

Streaming adaptif

DASH

ExoPlayer mendukung DASH dengan beberapa format container. Streaming media harus didemuxed, artinya video, audio, dan teks harus didefinisikan secara Elemen AdaptationSet dalam manifes DASH (CEA-608 merupakan pengecualian karena yang dijelaskan dalam tabel di bawah). Format sampel audio dan video yang ada harus juga didukung (lihat contoh format untuk mengetahui detailnya).

Fitur Didukung Komentar
Container
FMP4 YA Khusus streaming yang didemux
WebM YA Khusus streaming yang didemux
Matroska YA Khusus streaming yang didemux
MPEG-TS TIDAK Tidak ada dukungan yang direncanakan
Teks tertutup
TTML YA Mentah, atau tertanam dalam FMP4 sesuai dengan ISO/IEC 14496-30
WebVTT YA Mentah, atau tertanam dalam FMP4 sesuai dengan ISO/IEC 14496-30
CEA 608 YA Tersemat di FMP4 saat diberi sinyal menggunakan deskriptor Aksesibilitas SCTE
CEA 708 YA Tersemat di FMP4 saat diberi sinyal menggunakan deskriptor Aksesibilitas SCTE
Metadata
Metadata EMSG YA Disematkan di FMP4
Perlindungan konten
Widevine YA "cenc" skema: API 19+; "cbcs" skema: API 25+
SL2000 PlayReady YA Android TV, "cenc" khusus skema
{i>ClearKey<i} YA API 21+, "cenc" khusus skema
Pemutaran live
Pemutaran live reguler YA
Pemutaran live CMAF berlatensi sangat rendah YA
Data Klien Media Umum (CMCD) YA Panduan Integrasi

SmoothStreaming

ExoPlayer mendukung SmoothStreaming dengan format container FMP4. Streaming media harus didemux, artinya video, audio, dan teks harus didefinisikan secara berbeda Elemen StreamIndex dalam manifes SmoothStreaming. Audio yang dimuat dan format sampel video juga harus didukung (lihat contoh format untuk mengetahui detailnya).

Fitur Didukung Komentar
Container
FMP4 YA Khusus streaming yang didemux
Teks tertutup
TTML YA Disematkan di FMP4
Perlindungan konten
SL2000 PlayReady YA Khusus Android TV
Pemutaran live
Pemutaran live reguler YA
Data Klien Media Umum (CMCD) YA Panduan Integrasi

HLS

ExoPlayer mendukung HLS dengan beberapa format container. Audio yang dimuat dan format sampel video juga harus didukung (lihat contoh format untuk mengetahui detailnya). Rab sangat menganjurkan produser konten HLS untuk menghasilkan streaming HLS berkualitas tinggi, seperti yang dijelaskan di sini.

Fitur Didukung Komentar
Container
MPEG-TS YA
FMP4/CMAF YA
ADTS (AAC) YA
MP3 YA
Teks tertutup
CEA 608 YA
CEA 708 YA
WebVTT YA
Metadata
ID3 YA
SCTE 35 TIDAK
Perlindungan konten
AES-128 YA
Contoh AES-128 TIDAK
Widevine YA API 19+ ("cenc") dan 25+ (skema "cbcs")
SL2000 PlayReady YA Khusus Android TV
Kontrol server
Pembaruan delta YA
Memblokir pemuatan ulang playlist YA
Memblokir pemuatan petunjuk pramuat YA Kecuali untuk byterange dengan panjang yang tidak ditentukan
Pemutaran live
Pemutaran live reguler YA
HLS latensi rendah (Apple) YA
HLS (Komunitas) berlatensi rendah TIDAK
Data Klien Media Umum (CMCD) YA Panduan Integrasi

Format penampung progresif

Streaming dalam format container berikut dapat diputar langsung oleh ExoPlayer. Format sampel audio dan video yang ada juga harus didukung (lihat Contoh format untuk mengetahui detailnya). Untuk dukungan format dan penampung gambar, lihat Gambar.

Format penampung Didukung Komentar
MP4 YA
M4A YA
FMP4 YA
WebM YA
Matroska YA
MP3 YA Beberapa streaming hanya dapat dicari menggunakan pencarian kecepatan bit konstan**
Ogg YA Mengandung Vorbis, Opus, dan FLAC
WAV YA
MPEG-TS YA
MPEG-PS YA
FLV YA Tidak dapat dicari*
ADTS (AAC) YA Hanya dapat dicari menggunakan pencarian kecepatan bit konstan**
FLAC YA Menggunakan library FLAC atau ekstraktor FLAC di library ExoPlayer***
AMR YA Hanya dapat dicari menggunakan pencarian kecepatan bit konstan**

* Pencarian tidak didukung karena penampung tidak menyediakan metadata (misalnya, indeks sampel) untuk memungkinkan pemutar media melakukan pencarian dengan cara yang efisien. Jika pencarian diperlukan, sebaiknya gunakan format penampung yang lebih sesuai.

** Ekstraktor ini memiliki tanda FLAG_ENABLE_CONSTANT_BITRATE_SEEKING untuk mengaktifkan pencarian perkiraan menggunakan asumsi kecepatan bit yang konstan. Ini fungsi tersebut tidak diaktifkan secara default. Cara paling sederhana untuk memungkinkan fungsi untuk semua ekstraktor yang mendukungnya adalah menggunakan DefaultExtractorsFactory.setConstantBitrateSeekingEnabled, seperti yang dijelaskan di sini.

*** Ekstraktor library FLAC menghasilkan output audio mentah, yang dapat ditangani oleh framework di semua level API. Output ekstraktor FLAC library ExoPlayer Frame audio FLAC dan sebagainya bergantung pada adanya decoder FLAC (misalnya, MediaCodec decoder yang menangani FLAC (diperlukan dari API level 27), atau Library FFmpeg dengan FLAC diaktifkan). DefaultExtractorsFactory menggunakan ekstraktor ekstensi jika aplikasi dibuat dengan library FLAC. Jika tidak, sistem akan menggunakan ekstraktor library ExoPlayer.

RTSP

ExoPlayer mendukung RTSP live dan on demand. Contoh format yang didukung dan jenis jaringan tercantum di bawah ini.

Contoh format yang didukung

  • H264 (deskripsi media SDP harus menyertakan data SPS/PPS dalam untuk inisialisasi decoder).
  • AAC (dengan bitstream ADTS).
  • AC3.

Jenis jaringan yang didukung

  • RTP melalui UDP unicast (multicast tidak didukung).
  • RTSP berselisih, RTP melalui RTSP menggunakan TCP.

Contoh format

Secara default, ExoPlayer menggunakan decoder platform Android. Oleh karena itu, model format sampel bergantung pada platform yang mendasarinya, bukan pada ExoPlayer. Lihat Format media yang didukung untuk dokumentasi tentang format contoh yang didukung oleh perangkat Android. Perlu diketahui bahwa setiap perangkat dapat mendukung format tambahan di luar yang tercantum.

Selain decoder platform Android, ExoPlayer juga dapat menggunakan ekstensi decoder software. Solusi ini harus dibuat secara manual dan disertakan dalam proyek yang ingin memanfaatkannya. Saat ini kami menyediakan decoder software library untuk AV1 VP9 FLAC, Opus, dan FFmpeg.

Library FFmpeg

Library FFmpeg mendukung mendekode berbagai format sampel audio yang berbeda. Anda dapat memilih untuk disertakan saat membangun library, seperti yang didokumentasikan dalam README.md library. Tujuan tabel berikut ini menyediakan pemetaan dari format sampel audio ke Nama dekoder FFmpeg.

Format contoh Nama decoder
Vorbis Vorbis
Opus opus
FLAC Flac
ALAC Alac
Hukum mikro PCM {i>pcm_mulaw<i}
Peraturan PCM {i>pcm_alaw<i}
MP1, MP2, MP3 mp3
AMR-NB Amrnb
AMR-WB Amrwb
AAC aac
AC-3 AC3
E-AC-3 Eac3
DTS, DTS-HD Deka
TrueHD mlp truehd

Gambar

ExoPlayer mendukung format gambar berikut. Lihat Library Pemuatan Gambar mengenai cara mengintegrasikan dengan library eksternal yang dapat memberikan dukungan untuk kumpulan format yang berbeda.

Format gambar Didukung Catatan
BMP YA
GIF TIDAK Tidak ada dukungan Ekstraktor
JPEG YA
Foto Motion JPEG YA Gambar diam dan video didukung
PNG YA
WebP YA
HEIF/HEIC YA
Foto Gerakan HEIC Sebagian Hanya gambar diam yang didukung*
AVIF (dasar pengukuran) YA Didekode di Android 14 dan yang lebih baru saja

* Bagian video dari foto gerakan HEIC dapat diperoleh dengan MetadataRetriever dan diputar sebagai file mandiri.

Format subtitel mandiri

ExoPlayer mendukung file subtitel mandiri dalam berbagai format. Subtitel dapat di-sideload seperti yang dijelaskan di halaman item media.

Format penampung Didukung Jenis MIME
WebVTT YA MimeTypes.TEXT_VTT
TTML / SMPTE-TT YA MimeTypes.APPLICATION_TTML
SubRip YA MimeTypes.APPLICATION_SUBRIP
SubStationAlpha (SSA/ASS) YA MimeTypes.TEXT_SSA

Pemutaran video HDR

ExoPlayer menangani ekstraksi video rentang dinamis tinggi (HDR) dalam berbagai , termasuk Dolby Vision dalam MP4 dan HDR10+ di Matroska/WebM. Dekode dan menampilkan konten HDR bergantung pada dukungan dari platform Android dan perangkat seluler. Lihat Pemutaran Video HDR kami untuk mempelajari cara memeriksa kemampuan dekode/tampilan HDR serta batasan Dukungan HDR di seluruh versi Android.

Saat memutar streaming HDR yang memerlukan dukungan untuk profil codec tertentu, Pemilih MediaCodec default ExoPlayer akan memilih decoder yang mendukungnya (jika ada), meskipun decoder lain untuk jenis MIME yang sama dengan tidak mendukung profil itu muncul di posisi yang lebih tinggi dalam daftar codec. Hal ini dapat mengakibatkan memilih decoder software jika streaming melebihi kemampuan decoder hardware untuk jenis MIME yang sama.