Format yang didukung

Lihat halaman format yang didukung ExoPlayer untuk mengetahui pengantar format media secara umum. Batasan yang sama pada pemuatan, ekstraksi, dan decoding streaming berlaku dengan Transformer, meskipun Transformer tidak mendukung modul decoder software gabungan ExoPlayer.

Transformer juga mengandalkan MediaCodec untuk encoding, yang membatasi format output yang didukung. Lihat codec video MediaCodec untuk mengetahui informasi selengkapnya tentang batasan encoding.

Secara default, Transformer menghasilkan file MP4 standar menggunakan InAppMp4Muxer. Jika aplikasi Anda memerlukan MP4 terfragmentasi, Anda dapat meneruskan InAppFragmentedMp4Muxer.Factory saat menginisialisasi instance Transformer. Media3 juga mendukung format lain seperti WebM, AAC, Ogg, dan WAV menggunakan muxer khusus seperti WebmMuxer, AacMuxer, OggMuxer, dan WavMuxer. Muxer ini harus dienkapsulasi dalam kustom Muxer.Factory agar dapat disuntikkan, tetapi rilis mendatang akan menyertakan implementasi factory siap pakai untuk menyederhanakan proses ini.

Dukungan gambar

Transformer menggunakan BitmapFactory untuk memuat dan mendekode semua aset gambar, sehingga Transformer mendukung semua format yang didukung BitmapFactory. Lihat Dukungan gambar untuk mengetahui jenis gambar yang didukung. Untuk format multi-gambar (misalnya, GIF), satu frame gambar dari penampung akan ditampilkan jika DefaultAssetLoaderFactory digunakan.

Format khusus

Transformer mendukung penanganan input dalam format media yang lebih baru yang menyediakan fitur khusus dibandingkan dengan format konvensional.

Menangani video HDR

Semakin banyak perangkat yang mendukung perekaman video HDR, sehingga memberikan warna yang lebih jelas dan akurat serta rentang kecerahan yang lebih besar.

Transformer mendukung pengeditan video HDR dari Android 13 (level API 33) dan yang lebih baru pada perangkat dengan dukungan encoding yang diperlukan. Saat mengedit video HDR, efek video GL apa pun harus menangani komponen warna floating point 16-bit dan ruang warna BT.2020. HDR_MODE_KEEP_HDR adalah mode default saat membuat Composition. Jika pengeditan HDR tidak didukung, Transformer akan kembali menggunakan HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL.

Konversi HDR ke SDR, yang juga dikenal sebagai tone-mapping, didukung dari Android 10 (API level 29) dan yang lebih baru pada perangkat dengan dukungan decoding dan OpenGL yang diperlukan. Hal ini berguna saat membagikan media HDR ke aplikasi atau layanan lain yang tidak mendukung penyerapan konten HDR. Untuk mengaktifkan tone-mapping menggunakan OpenGL, panggil setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL) saat membuat Composition. Mulai Android 12 (level API 31) dan yang lebih baru, MediaCodec juga mendukung tone-mapping di beberapa perangkat, termasuk semua perangkat yang menjalankan Android 13 atau yang lebih tinggi yang dapat merekam video HDR. Untuk mengaktifkan tone-mapping menggunakan MediaCodec, panggil setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC).

Transformer juga mendukung skenario transcoding lanjutan seperti berikut:

  • Video Ultra HDR ke HDR: Anda dapat mengonversi input gambar Ultra HDR menjadi video HDR, dengan mempertahankan rentang dinamis dan gamut warna lebar gambar sehingga foto tetap cocok dengan kecerahan puncak dan warna video HDR dalam linimasa campuran.
  • Transcoding dan transmuxing Dolby Vision: Transformer mendukung transmuxing lapisan dasar yang kompatibel dengan versi sebelumnya (seperti HEVC) dari media Dolby Vision (profil 8) tanpa melakukan encoding ulang, atau melakukan transcoding dengan tone-mapping ke dalam format SDR standar.

Menangani media gerak lambat

Video gerak lambat menyertakan metadata yang menunjukkan kecepatan pemutaran setiap bagian streaming. Perataan adalah proses pembuatan streaming video baru berdasarkan video gerak lambat, tetapi bagiannya dipercepat atau diperlambat berdasarkan metadata, sehingga video diputar dengan benar meskipun pada pemutar yang tidak menerapkan metadata gerak lambat.

Untuk meratakan streaming gerak lambat, gunakan metode builder setFlattenForSlowMotion di EditedMediaItem.

Kotlin

val editedMediaItem =
  EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build()
val transformer = Transformer.Builder(context).addListener(transformerListener).build()
transformer.start(editedMediaItem, outputPath)

Java

EditedMediaItem editedMediaItem =
    new EditedMediaItem.Builder(inputMediaItem).setFlattenForSlowMotion(true).build();
Transformer transformer =
    new Transformer.Builder(context).addListener(transformerListener).build();
transformer.start(editedMediaItem, outputPath);

Dengan begitu, Anda dapat mendukung video gerak lambat tanpa perlu khawatir menangani format khusus ini. Yang perlu Anda lakukan hanyalah menyimpan dan memutar versi video yang diratakan, bukan versi aslinya.