Pengeditan multi-aset

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.