การแก้ไขเนื้อหาหลายรายการ

เมื่อใช้ Transformer คุณจะรวมชิ้นงานสื่อหลายรายการ เช่น วิดีโอ รูปภาพ และไฟล์เสียง เพื่อสร้าง Composition ได้

การส่งออกคอมโพสิต

หากต้องการใช้การเปลี่ยนรูปแบบ (เช่น เอฟเฟกต์หรือการตัดแต่ง) กับMediaItem คุณควรสร้าง EditedMediaItem เพื่อแสดงถึงชิ้นงานที่มีการใช้การเปลี่ยนรูปแบบ

จากนั้นจะนำออบเจ็กต์ EditedMediaItem มาต่อกันเพื่อสร้าง EditedMediaItemSequence เช่น คุณสามารถสร้าง EditedMediaItemSequence ที่มีวิดีโอที่ตัดต่อแล้ว 2 รายการ รายการใน EditedMediaItemSequence จะเรียงตามลำดับและ ไม่ทับซ้อนกัน

Composition คือการรวมออบเจ็กต์ EditedMediaItemSequence ตั้งแต่ 1 รายการขึ้นไป EditedMediaItemSequenceออบเจ็กต์ทั้งหมดในCompositionจะผสมกัน เพื่อให้คุณรวมเนื้อหาวิดีโอและเสียงได้

Composition สามารถส่งออกออบเจ็กต์ได้โดยใช้ Transformer

ตัวอย่างการสร้างและส่งออกเนื้อหาวิดีโอที่ประกอบด้วยวิดีโอคลิป 2 รายการที่ตัดต่อแล้ว โดยมีแทร็กเสียงซ้อนทับอยู่

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);

ตัวอย่างกรณีการใช้งานที่รองรับ

ต่อไปนี้เป็นรายการ Use Case โดยสังเขปที่ Transformer API รองรับด้วยการคอมโพส

  • การรวมชิ้นงานเสียง รูปภาพ และวิดีโอตามลำดับ
  • การเพิ่มเสียงพื้นหลังลงในชิ้นงานวิดีโอ
  • การเพิ่มเอฟเฟกต์ลงในคอมโพสิต
  • การแมปโทนอินพุต HDR เป็น SDR เพื่อสร้างเอาต์พุต SDR ที่มีคุณภาพของภาพดียิ่งขึ้น

ข้อจำกัดในปัจจุบัน

ลำดับภายในองค์ประกอบต้องเป็นไปตามเงื่อนไขที่ระบุไว้ใน Transformer.start() นอกจากนี้ ระบบยังไม่รองรับการดำเนินการต่อไปนี้เมื่อใช้ Compositions

  • การครอสเฟดแทร็กวิดีโอหรือแทร็กเสียง

คำขอฟีเจอร์

หากมีคำขอฟีเจอร์สำหรับ Transformer API โปรดแจ้งปัญหาในที่เก็บ Media3 GitHub