Lihat halaman format yang didukung ExoPlayer untuk pengantar format media secara umum. Batasan yang sama pada pemuatan, pengekstrakan, dan streaming decoding berlaku dengan Transformer, meskipun Transformer tidak mendukung modul decoder software yang dipaketkan ExoPlayer.
Transformer juga mengandalkan MediaCodec
untuk encoding, dan perlu multipleks, atau
mux, menghasilkan file media, yang membatasi format output yang didukung. Lihat
Codec video MediaCodec
untuk informasi selengkapnya tentang batasan encoding, dan
MediaMuxer
untuk batasan yang berlaku pada penampung media output. Transformer hanya menghasilkan
{i>file<i} MP4.
Secara default, Transformer
menggunakan MediaMuxer
, tetapi InAppMuxer
yang sedang berlangsung
tersedia secara opsional untuk menghindari beberapa batasan MediaMuxer
terkait
struktur frame referensi dan format contoh yang didukung. Muxer default akan menjadi muxer dalam aplikasi dalam rilis mendatang.
Dukungan gambar
Transformer menggunakan BitmapFactory
untuk memuat dan mendekode semua aset gambar sehingga
Transformer mendukung semua format yang dilakukan BitmapFactory. Lihat
Dukungan gambar
untuk 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 lebih baru yang menyediakan fitur khusus dibandingkan dengan format konvensional.
Menangani video HDR
Semakin banyak perangkat yang kini mendukung pengambilan video HDR, memberikan warna yang lebih cerah dan akurat serta rentang kecerahan yang lebih besar.
Transformer mendukung pengeditan video HDR dari Android 13 (API level 33) dan seterusnya
di perangkat yang memiliki 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 mem-build
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 pemetaan nada, didukung mulai dari Android
10 (API level 29) dan seterusnya 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 pemetaan nada menggunakan panggilan OpenGL, 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 nada 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. Perataan adalah proses menghasilkan streaming video baru berdasarkan video gerak lambat, tetapi bagian-bagiannya dipercepat atau diperlambat berdasarkan metadata, sehingga dapat diputar dengan benar bahkan pada pemutar yang tidak menerapkan metadata gerak lambat.
Untuk meratakan streaming gerakan lambat, 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);
Dengan begitu, Anda dapat mendukung video gerak lambat tanpa perlu khawatir menangani format khusus ini. Yang perlu Anda lakukan adalah menyimpan dan memutar versi video yang diratakan, bukan versi aslinya.