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 リポジトリで問題を報告してください。