Dengan Transformer, Anda dapat menggabungkan beberapa aset media, seperti video, gambar, dan file audio untuk membuat Composition.
Mengekspor Komposisi
Untuk menerapkan transformasi
(seperti efek atau pengeditan pemangkasan) ke MediaItem, Anda harus membuat
EditedMediaItem
untuk merepresentasikan aset yang telah diterapkan transformasi.
Objek EditedMediaItem kemudian dapat digabungkan untuk membuat
EditedMediaItemSequence.
Misalnya, Anda dapat membuat EditedMediaItemSequence dengan dua video yang diedit. Item di dalam EditedMediaItemSequence diurutkan secara berurutan dan tidak tumpang-tindih dalam waktu.
Composition adalah kombinasi dari satu atau beberapa objek EditedMediaItemSequence. Semua objek EditedMediaItemSequence dalam Composition dicampur
bersama, sehingga Anda dapat menggabungkan aset video dan audio.
Objek Composition dapat diekspor menggunakan Transformer.
Berikut contoh pembuatan dan mengekspor aset video yang terdiri dari dua klip video yang diedit, yang ditimpa dengan trek audio:
Kotlin
val transformer = ... // Set up Transformer instance val video1 = EditedMediaItem.Builder( MediaItem.fromUri(video1Uri)) .build() val video2 = EditedMediaItem.Builder( MediaItem.fromUri(video2Uri)) .build() val videoSequence = EditedMediaItemSequence.Builder( setOf(C.TRACK_TYPE_AUDIO, C.TRACK_TYPE_VIDEO)) .addItems(video1, video2) .build() val backgroundAudio = EditedMediaItem.Builder( MediaItem.fromUri(audioUri)) .build() val backgroundAudioSequence = EditedMediaItemSequence.Builder( setOf(C.TRACK_TYPE_AUDIO)) .addItem(backgroundAudio) .setIsLooping(true) // Loop audio track through duration of videoSequence .build() val composition = Composition.Builder( videoSequence, backgroundAudioSequence) .build() val filePath = ... // Provide file path to save Composition transformer.start(composition, filePath)
Java
Transformer transformer = ... // Set up Transformer instance EditedMediaItem video1 = new EditedMediaItem.Builder( MediaItem.fromUri(video1Uri)) .build(); EditedMediaItem video2 = new EditedMediaItem.Builder( MediaItem.fromUri(video2Uri)) .build(); EditedMediaItemSequence videoSequence = new EditedMediaItemSequence.Builder( ImmutableSet.of(C.TRACK_TYPE_AUDIO, C.TRACK_TYPE_VIDEO)) .addItems(video1, video2) .build(); EditedMediaItem backgroundAudio = new EditedMediaItem.Builder( MediaItem.fromUri(audioUri)) .build(); EditedMediaItemSequence backgroundAudioSequence = new EditedMediaItemSequence.Builder( ImmutableSet.of(C.TRACK_TYPE_AUDIO)) .addItem(backgroundAudio) .setIsLooping(true) // Loop audio track through duration of videoSequence .build(); String filePath = ... // Provide file path to save Composition Composition composition = new Composition.Builder( videoSequence, backgroundAudioSequence) .build(); transformer.start(composition, filePath);
Contoh kasus penggunaan yang didukung
Berikut adalah daftar tidak lengkap kasus penggunaan yang didukung Transformer API dengan Komposisi:
- Menggabungkan aset audio, gambar, dan video secara berurutan.
- Menambahkan audio latar belakang ke aset video.
- Menambahkan efek ke Komposisi.
- Pemetaan tone input HDR ke SDR untuk menghasilkan output SDR dengan kualitas visual yang lebih baik.
Batasan saat ini
Urutan dalam Komposisi harus memenuhi kondisi yang diuraikan dalam
Transformer.start().
Selain itu, operasi berikut belum didukung saat bekerja dengan Komposisi:
- Membuat transisi silang pada trek video atau audio
Permintaan fitur
Jika Anda memiliki permintaan fitur untuk Transformer API, ajukan masalah di repositori GitHub Media3.