5

我已经成功地编写了一个包含多个视频剪辑的 AVMutableComposition,并且可以查看和导出它,并且我希望能够使用交叉淡入淡出在它们之间进行转换,所以我想使用 AVMutableVideoComposition。我找不到任何关于如何连续安排和播放几个 AVAsset 视频的示例。有没有人有一个例子,说明如何使用相当于 AVMutableComposition 的 insertTimeRange 将轨道添加到 AVMutableVideoComposition,或者如何设置交叉淡入淡出?

[self.composition insertTimeRange:CMTimeRangeMake(kCMTimeZero,asset.avAsset.duration)
                                         ofAsset:asset.avAsset
                                          atTime:self.composition.frameDuration
                                           error:nil]
4

1 回答 1

13

我从 Apple 的 WWDC 2010 示例代码中找到了一个名为 AVEditDemo 的示例。

https://developer.apple.com/library/ios/samplecode/AVCustomEdit/Introduction/Intro.html

示例中有很多细节,但我会总结一下:您需要同时使用 AVMutableComposition 和 AVMutableVideoComposition。将轨道单独添加到 AVMutableComposition 而不是使用更简单的 insertTimeRange,因为它允许您在轨道上设置重叠时间。还需要将轨道作为 AVMutableVideoCompositionLayerInstructions 添加到 AVMutableVideoComposition 中,并带有不透明度渐变。最后,要在 AVPlayer 中播放,您需要使用 AVMutableComposition 和 AVMutableVideoComposition 创建一个 AVPlayerItem。

似乎在 api 中更深入的每个级别——在这种情况下,从带有资产的 MPMoviePlayer 到带有 AVComposition 的 AVPlayer,最后到 AVVideoComposition——以指数方式增加了必要的编码。

于 2010-09-30T17:43:59.990 回答