使用 Transformer,您可以結合多個媒體素材資源 (例如影片、圖片和音訊檔案) 來建立 Composition。
匯出組合
如要對 MediaItem 套用轉換 (例如特效或修剪編輯),請建立 EditedMediaItem,代表已套用轉換的資產。
接著,您可以將 EditedMediaItem 物件串連在一起,建立 EditedMediaItemSequence。舉例來說,您可以建立含有兩部編輯影片的 EditedMediaItemSequence。EditedMediaItemSequence 內的項目會依序排列,且時間不會重疊。
Composition 是由一或多個 EditedMediaItemSequence 物件組合而成。Composition中的所有 EditedMediaItemSequence 物件都會混合在一起,方便您合併影片和音訊素材資源。
Composition 物件可使用 Transformer 匯出。
以下範例說明如何建立及匯出影片素材資源,其中包含兩個經過編輯的影片片段,並疊加音軌:
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);
支援的用途範例
以下僅列舉部分 Transformer API 支援的用途:
- 依序結合音訊、圖片和影片素材資源。
- 在影片素材資源中加入背景音訊。
- 在 Composition 中新增效果。
- 將 HDR 輸入內容色調對應至 SDR,產生畫質更佳的 SDR 輸出內容。
目前限制
Composition 中的序列必須符合Transformer.start()中列出的條件。此外,使用 Compositions 時,系統尚不支援下列作業:
- 視訊或音訊軌的交叉淡化
功能要求
如要對 Transformer API 提出功能要求,請在 Media3 GitHub 存放區中回報問題。