Pengeditan multi-aset

Dengan menggunakan Transformer, Anda dapat menggabungkan beberapa aset media, seperti video, file gambar, dan audio untuk membuat Composition.

Mengekspor Komposisi

Untuk menerapkan transformasi (seperti efek atau memangkas hasil edit) ke MediaItem, Anda harus membuat EditedMediaItem untuk mewakili aset yang memiliki transformasi yang diterapkan padanya.

Objek EditedMediaItem kemudian dapat digabungkan untuk membuat EditedMediaItemSequence. Misalnya, Anda dapat membuat EditedMediaItemSequence dengan dua file yang telah diedit video. Item di dalam EditedMediaItemSequence diurutkan secara berurutan dan tidak tumpang tindih dalam waktu yang ditentukan.

Composition adalah kombinasi dari satu atau beberapa EditedMediaItemSequence objek terstruktur dalam jumlah besar. Semua objek EditedMediaItemSequence di Composition dicampur sehingga Anda dapat menggabungkan aset video dan audio.

Objek Composition dapat diekspor menggunakan Transformer.

Berikut contoh pembuatan dan ekspor aset video yang terdiri dari dua klip video yang diedit, dilapisi 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(
  video1, video2)

val backgroundAudio = EditedMediaItem.Builder(
  MediaItem.fromUri(audioUri))
  .build()

val backgroundAudioSequence = EditedMediaItemSequence(
  ImmutableList.of(backgroundAudio),
  /* isLooping= */ true) // Loop audio track through duration of videoSequence

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(
  video1, video2);

EditedMediaItem backgroundAudio = new EditedMediaItem.Builder(
  MediaItem.fromUri(audioUri))
  .build();

EditedMediaItemSequence backgroundAudioSequence = new EditedMediaItemSequence(
  ImmutableList.of(backgroundAudio),
  /* isLooping= */ true); // Loop audio track through duration of videoSequence

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

Ini adalah daftar tidak lengkap kasus penggunaan yang dijalankan Transformer API didukung dengan Komposisi:

  • Menggabungkan aset audio, gambar, dan video secara berurutan. Namun, semua item harus memiliki trek yang sama. Misalnya, Anda tidak boleh memiliki urutan yang berisi file khusus audio, diikuti dengan file video.
  • Menambahkan audio latar belakang ke aset video.
  • Menambahkan efek ke Komposisi.
  • Memetakan 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:

  • Memulai pemutaran EditedMediaItemSequence dengan offset.
  • Trek video atau audio crossfading

Permintaan fitur

Jika Anda memiliki permintaan fitur untuk Transformer API, ajukan masalah pada Repositori GitHub Media3.