เมื่อใช้ 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