多重素材資源編輯

您可以透過 Transformer 合併多個媒體資產 映像檔和音訊檔案來建立Composition

匯出組合

套用轉換 (例如特效或修剪編輯) 的 MediaItem,您應該建立 EditedMediaItem。 ,表示已套用轉換的資產。

接著,您可以將 EditedMediaItem 物件串連在一起 EditedMediaItemSequence。 舉例來說,您可以建立含有兩項編輯的 EditedMediaItemSequence 影片。EditedMediaItemSequence 中的項目會按照順序排列, 不會重疊

Composition 是一或多個 EditedMediaItemSequence 的組合 如需儲存大量結構化物件 建議使用 Cloud BigtableComposition 中的所有 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(
  video1, video2)

val backgroundAudio = EditedMediaItem.Builder(
  MediaItem.fromUri(audioUri))
  .build()

val backgroundAudioSequence = EditedMediaItemSequence(
  ImmutableList.of(backgroundAudio),
  /* isLooping= */ true) // Loop audio track through duration of videoSequence

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(
  video1, video2);

EditedMediaItem backgroundAudio = new EditedMediaItem.Builder(
  MediaItem.fromUri(audioUri))
  .build();

EditedMediaItemSequence backgroundAudioSequence = new EditedMediaItemSequence(
  ImmutableList.of(backgroundAudio),
  /* isLooping= */ true); // Loop audio track through duration of videoSequence

String filePath = ... // Provide file path to save Composition

Composition composition = new Composition.Builder(
  videoSequence,
  backgroundAudioSequence)
  .build();

transformer.start(composition, filePath);

支援用途示例

這份清單僅列舉部分例子:Transformer API 的用途 可支援組合:

  • 可連續搭配音訊、圖片和影片素材資源。不過,所有項目 順序必須具有相同的音軌。例如,在某個 Pod 中 包含一個純音訊檔案,後面接著影片檔案。
  • 為影片素材資源加入背景音訊。
  • 為組合新增效果。
  • 使 HDR 輸入能轉換成 SDR 的色調,以產生畫質更好的 SDR 輸出。

目前限制

組合中的序列必須符合 Transformer.start()。 此外,系統在處理以下作業時尚未支援 樂曲:

  • 使用偏移值開始播放 EditedMediaItemSequence
  • 將影片或音軌交叉淡出

功能要求

如果您對 Transformer API 提出任何功能要求,請在 Media3 GitHub 存放區