Lihat halaman format yang didukung ExoPlayer untuk pengantar format media secara umum. Batasan yang sama pada pemuatan, ekstraksi, dan decoding streaming berlaku dengan Transformer, meskipun Transformer tidak mendukung modul decoder software bawaan 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 yang terfragmentasi, Anda dapat meneruskan
InAppFragmentedMp4Muxer.Factory
saat menginisialisasi instance Transformer. Media3 juga mendukung format lain seperti WebM, AAC, Ogg menggunakan muxer khusus seperti WebmMuxer, AacMuxer, dan OggMuxer. Objek ini harus di-wrap dalam
Muxer.Factory kustom untuk disuntikkan, tetapi rilis mendatang
akan menyertakan implementasi pabrik 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 jenis gambar yang didukung. Untuk format multi-gambar (misalnya, GIF), frame gambar tunggal
dari penampung 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
Makin banyak perangkat yang mendukung perekaman video HDR, sehingga memberikan warna yang lebih cerah dan akurat serta rentang kecerahan yang lebih luas.
Transformer mendukung pengeditan video HDR dari Android 13 (level API 33) dan yang lebih baru
di perangkat dengan dukungan encoding yang diperlukan. Saat mengedit video HDR, semua efek video GL
harus menangani komponen warna floating point 16-bit dan ruang warna BT.2020. HDR_MODE_KEEP_HDR adalah mode default saat membangun
Composition. Jika pengeditan HDR tidak didukung, Transformer
akan kembali menggunakan HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL.
Mengonversi HDR ke SDR, yang juga dikenal sebagai pemetaan warna, didukung mulai dari Android 10 (level API 29) dan yang lebih baru di 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 seterusnya, MediaCodec
juga mendukung pemetaan warna di beberapa perangkat, termasuk semua perangkat yang menjalankan
Android 13 atau yang lebih tinggi yang dapat merekam video HDR. Untuk mengaktifkan pemetaan nada menggunakan
MediaCodec, panggil setHdrMode(HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC).
Menangani media gerak lambat
Video gerak lambat menyertakan metadata yang menunjukkan kecepatan pemutaran setiap bagian streaming. Meratakan adalah proses menghasilkan aliran video baru berdasarkan video gerak lambat, tetapi bagian-bagiannya dipercepat atau diperlambat berdasarkan metadata, sehingga dapat diputar dengan benar meskipun di pemutar yang tidak menerapkan metadata gerak lambat.
Untuk meratakan aliran slow motion, gunakan metode builder setFlattenForSlowMotion
pada 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);
Hal ini memungkinkan Anda mendukung video gerak lambat tanpa perlu khawatir tentang penanganan format khusus ini. Yang perlu Anda lakukan adalah menyimpan dan memutar video versi yang disederhanakan, bukan video aslinya.