Library Media3 Transformer menyediakan serangkaian alat untuk mengedit dan memanipulasi media. Komponen inti untuk pengeditan multi-aset adalah
Composition API. API ini memungkinkan Anda mengatur beberapa item media input, seperti klip video, gambar, dan trek audio, ke dalam satu struktur koheren yang kemudian dapat diproses, dilihat pratinjaunya, atau diekspor. Composition dapat dianggap sebagai linimasa yang berisi satu atau beberapa urutan media. Setiap
urutan (ditentukan oleh EditedMediaItemSequence) berisi item media individual (ditentukan sebagai instance EditedMediaItem).
Transformasi dan efek dapat diterapkan ke individual
EditedMediaItem, atau ke seluruh Composition.
Composition adalah titik entri Anda untuk berbagai kasus penggunaan dengan Media3 Transformer, seperti:
- Menggabungkan aset audio, gambar, dan video secara berurutan.
- Menempatkan video di atas video lain (picture-in-picture).
- Mencampur trek audio latar belakang dengan urutan video.
- Menerapkan efek visual atau audio di seluruh bagian yang diedit.
- Menangani skenario kompleks seperti pemrosesan video HDR.
Panduan ini berfokus pada cara menentukan dan membuat objek Composition, termasuk class utama yang terlibat, cara membuat komposisi dasar dan yang lebih kompleks dengan satu atau beberapa urutan, dan cara menerapkan efek di berbagai level.
Konsep dan Class Utama
Untuk menggunakan Composition API secara efektif, penting untuk memahami class utama yang terlibat dalam membuat komposisi media:
Effects:
- Tujuan: Objek
Effectsadalah kumpulan prosesor audio dan efek video. - Cara penggunaannya: Dalam konteks
Composition,Effectsdapat ditetapkan pada instanceEditedMediaItemindividual untuk mengubah klip tertentu, atau keCompositionsecara keseluruhan (biasanya untuk efekPresentationyang memengaruhi output akhir, seperti menyesuaikan resolusi tampilan atau kecepatan frame). - Mengapa penting:
Effectsadalah mekanisme untuk menerapkan transformasi, filter, dan pemrosesan lainnya ke media Anda di tingkat item individual dan tingkat komposisi keseluruhan. Untuk mengetahui informasi selengkapnya, lihatTransformations.
EditedMediaItem:
- Tujuan: Class ini mewakili satu bagian media (seperti file video, gambar, atau audio) dan pengeditan yang akan diterapkan padanya.
- Cara penggunaannya:
EditedMediaItemmengelompokkanMediaItem(yang mengarah ke konten media sebenarnya) dengan objekEffects. - Mengapa penting: Ini adalah blok penyusun dasar komposisi Anda. Dengan blok ini, Anda dapat menentukan dengan tepat media mana yang akan disertakan dan bagaimana tampilan serta suara setiap bagian individual sebelum digabungkan dengan bagian lain dalam urutan.
EditedMediaItemSequence:
- Tujuan: Mewakili urutan linear objek
EditedMediaItemyang dimaksudkan untuk diputar satu per satu. - Cara penggunaannya:
EditedMediaItemSequencedibuat dengan daftarEditedMediaItemobjek. Setiap urutan dalamCompositionmirip dengan trek atau lapisan dalam linimasa pengeditan video multi-trek. Misalnya, satu urutan mungkin berisi klip video utama Anda, sementara urutan lain, yang tumpang-tindih dalam waktu, mungkin berisi klip video yang akan ditempatkan di atas yang pertama, dan urutan lain mungkin hanya berisi trek audio untuk musik latar belakang. - Mengapa penting:
EditedMediaItemSequencemengelompokkan item media terkait yang harus mengikuti satu sama lain secara langsung. Dengan menggunakan beberapa urutan, Anda dapat membuat pengaturan yang lebih kompleks, seperti melapisi audio atau membuat overlay visual.
Composition:
- Tujuan: Ini adalah objek level teratas yang mewakili seluruh linimasa media yang akan diproses. Objek ini bertindak sebagai penampung untuk semua urutan media dan setelan atau efek global yang berlaku untuk seluruh output.
- Cara penggunaannya: A
Compositionterdiri dari satu atau beberapaEditedMediaItemSequenceobjek. Anda juga dapat menerapkan efek di seluruh komposisi dan menetapkan konfigurasi global seperti mode HDR langsung diComposition. JikaCompositionberisi beberapa objekEditedMediaItemSequence, urutan ini dapat diatur untuk diputar secara berurutan atau dapat tumpang-tindih dalam waktu, sehingga memungkinkan tata letak yang ditempatkan di atas seperti picture-in-picture atau transisi dari satu urutan ke urutan lainnya. - Mengapa penting: A
Compositionmenentukan struktur keseluruhan media input yang akan diproses, dan merupakan objek umum yang dapat Anda gunakan untuk melihat pratinjau pengeditan denganCompositionPlayerdan mengekspor video output dengan pengeditan yang diterapkan menggunakanTransformer.
Membuat dan mengekspor Composition
Berikut adalah contoh pembuatan aset video yang terdiri dari dua klip video yang diedit, yang ditempatkan di atas trek audio, dan mengekspornya:
Kotlin
val video1 = EditedMediaItem.Builder(MediaItem.fromUri(video1Uri)).build() val video2 = EditedMediaItem.Builder(MediaItem.fromUri(video2Uri)).build() val videoSequence = EditedMediaItemSequence.withAudioAndVideoFrom(listOf(video1, video2)) val backgroundAudio = EditedMediaItem.Builder(MediaItem.fromUri(audioUri)).build() val backgroundAudioSequence = EditedMediaItemSequence.withAudioFrom(listOf(backgroundAudio)) .buildUpon() .setIsLooping(true) // Loop audio track through duration of videoSequence .build() val composition = Composition.Builder(videoSequence, backgroundAudioSequence).build() transformer.start(composition, filePath)
Java
EditedMediaItem video1 = new EditedMediaItem.Builder(MediaItem.fromUri(video1Uri)).build(); EditedMediaItem video2 = new EditedMediaItem.Builder(MediaItem.fromUri(video2Uri)).build(); EditedMediaItemSequence videoSequence = EditedMediaItemSequence.withAudioAndVideoFrom(ImmutableList.of(video1, video2)); EditedMediaItem backgroundAudio = new EditedMediaItem.Builder(MediaItem.fromUri(audioUri)).build(); EditedMediaItemSequence backgroundAudioSequence = EditedMediaItemSequence.withAudioFrom(ImmutableList.of(backgroundAudio)) .buildUpon() .setIsLooping(true) // Loop audio track through duration of videoSequence .build(); Composition composition = new Composition.Builder(videoSequence, backgroundAudioSequence).build(); transformer.start(composition, filePath);
Contoh kasus penggunaan yang didukung
Berikut adalah daftar kasus penggunaan yang tidak lengkap yang didukung Transformer API dengan Composition:
- Menggabungkan aset audio, gambar, dan video secara berurutan.
- Menambahkan audio latar belakang ke aset video.
- Menambahkan efek ke Komposisi.
- Pemetaan nada 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 menggunakan Komposisi:
- Crossfading trek video atau audio
Permintaan fitur
Jika Anda memiliki permintaan fitur untuk Transformer API, ajukan masalah di repositori GitHub Media3.