多重素材資源編輯

使用 Transformer,您可以結合多個媒體素材資源 (例如影片、圖片和音訊檔案) 來建立 Composition

匯出組合

如要對 MediaItem 套用轉換 (例如效果或修剪編輯),請建立 EditedMediaItem,代表已套用轉換的資產。

接著,您可以將 EditedMediaItem 物件串連在一起,建立 EditedMediaItemSequence。舉例來說,您可以建立含有兩部編輯影片的 EditedMediaItemSequenceEditedMediaItemSequence 內的項目會依序排列,且不會在時間上重疊。

Composition 是由一或多個 EditedMediaItemSequence 物件組合而成。Composition中的所有 EditedMediaItemSequence 物件都會混合在一起,方便您合併影片和音訊素材資源。

Composition 物件可使用 Transformer 匯出。

以下範例說明如何建立及匯出影片素材資源,其中包含兩個經過編輯的影片片段,並疊加音軌:

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

支援的用途範例

以下僅列舉部分 Transformer API 支援的用途:

  • 依序結合音訊、圖片和影片素材資源。
  • 在影片素材資源中加入背景音訊。
  • 在 Composition 中新增效果。
  • 將 HDR 輸入內容色調對應至 SDR,產生畫質更佳的 SDR 輸出內容。

目前限制

Composition 中的序列必須符合 Transformer.start() 中列出的條件。此外,使用 Compositions 時,系統尚不支援下列作業:

  • 視訊或音訊軌的交叉淡化

功能要求

如要對 Transformer API 提出功能要求,請在 Media3 GitHub 存放區中回報問題。