Transformer を使用すると、動画、画像、音声ファイルなどの複数のメディア アセットを組み合わせて Composition を作成できます。
コンポジションのエクスポート
MediaItem に変換(エフェクトやトリミング編集など)を適用するには、変換が適用されたアセットを表す EditedMediaItem を作成する必要があります。
EditedMediaItem オブジェクトを連結して EditedMediaItemSequence を作成できます。たとえば、編集した 2 つの動画を含む EditedMediaItemSequence を作成できます。EditedMediaItemSequence 内のアイテムは順次並べられ、時間的に重複することはありません。
Composition は、1 つ以上の EditedMediaItemSequence オブジェクトの組み合わせです。Composition 内のすべての EditedMediaItemSequence オブジェクトが混合され、動画アセットと音声アセットを組み合わせることができます。
Composition オブジェクトは Transformer を使用してエクスポートできます。
次に、2 つの編集済み動画クリップで構成され、音声トラックがオーバーレイされた動画アセットを作成してエクスポートする例を示します。
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 がコンポジションでサポートするユースケースの一部です。
- 音声、画像、動画のアセットを順番に組み合わせます。
- 動画アセットにバックグラウンド オーディオを追加する。
- コンポジションにエフェクトを追加する。
- HDR 入力を SDR にトーン マッピングして、より高品質な SDR 出力を生成します。
現時点における制約
コンポジション内のシーケンスは、Transformer.start() で説明されている条件を満たしている必要があります。また、コンポジションの操作では、次のオペレーションはまだサポートされていません。
- 動画トラックまたは音声トラックのクロスフェード
機能リクエスト
Transformer API の機能リクエストがある場合は、Media3 GitHub リポジトリで問題を報告してください。