使用 Transformer,您可以组合多个媒体资源,例如视频、
来创建 Composition
。
导出乐曲
应用转换
(如特效或剪辑修改)MediaItem
,则应创建一个
EditedMediaItem
来表示已应用转换的资源。
然后,可将 EditedMediaItem
对象串联在一起以创建
EditedMediaItemSequence
。
例如,您可以创建一个 EditedMediaItemSequence
,在其中修改两个
视频。EditedMediaItemSequence
中的项会依序排序,
确保它们在时间上不重叠
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( 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 的 组合支持:
- 依序组合音频、图片和视频素材资源。不过,所有项目 必须具有相同的轨道。例如,您不能将序列 其中包含一个纯音频文件,后跟一个视频文件。
- 向视频素材资源添加背景音频。
- 向组合添加效果。
- 将 HDR 输入色调映射到 SDR,可生成更优质的 SDR 输出。
当前限制
乐曲中的序列必须满足
Transformer.start()
。
此外,使用
乐曲:
- 开始播放带有偏移量的
EditedMediaItemSequence
。 - 淡入淡出视频或音轨
功能请求
如果您对 Transformer API 有任何功能请求,请在 Media3 GitHub 代码库。