多重素材資源編輯

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

匯出組合

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

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

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 存放區中回報問題。