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

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

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

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

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

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

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

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

Kotlin

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

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

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