マルチアセット編集

Transformer を使用すると、動画、画像、音声ファイルなどの複数のメディア アセットを組み合わせて Composition を作成できます。

コンポジションのエクスポート

MediaItem変換(エフェクトやトリミング編集など)を適用するには、変換が適用されたアセットを表す EditedMediaItem を作成する必要があります。

EditedMediaItem オブジェクトを連結して EditedMediaItemSequence を作成できます。たとえば、編集した 2 つの動画を含む EditedMediaItemSequence を作成できます。EditedMediaItemSequence 内のアイテムは順次並べられ、時間的に重複することはありません。

Composition は、1 つ以上の EditedMediaItemSequence オブジェクトの組み合わせです。Composition 内のすべての EditedMediaItemSequence オブジェクトが混合され、動画アセットと音声アセットを組み合わせることができます。

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

サポートされているユースケースの例

以下は、Transformer API がコンポジションでサポートするユースケースの一部です。

  • 音声、画像、動画のアセットを順番に組み合わせます。
  • 動画アセットにバックグラウンド オーディオを追加する。
  • コンポジションにエフェクトを追加する。
  • HDR 入力を SDR にトーン マッピングして、より高品質な SDR 出力を生成します。

現時点における制約

コンポジション内のシーケンスは、Transformer.start() で説明されている条件を満たす必要があります。また、コンポジションの操作では、次のオペレーションはまだサポートされていません。

  • 動画トラックまたは音声トラックのクロスフェード

機能リクエスト

Transformer API に関する機能リクエストがある場合は、Media3 GitHub リポジトリで問題を報告してください。