我已成功编写了一个带有多个视频剪辑的AVMutableComposition,可以查看并导出它,我希望能够使用交叉渐变在它们之间进行转换,所以我想使用AVMutableVideoComposition。我找不到任何关于如何连续安排和播放几个AVAsset视频的例子。有没有人有一个例子,说明如何使用AVMutableComposition的insertTimeRange相当于AVMutableVideoComposition添加曲目,或者如何设置交叉淡入淡出?
[self.composition insertTimeRange:CMTimeRangeMake(kCMTimeZero,asset.avAsset.duration)
ofAsset:asset.avAsset
atTime:self.composition.frameDuration
error:nil]
答案 0 :(得分:11)
我在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获得AVPlayer资产到AVComposition,最后到AVVideoComposition - 以指数方式增加必要的编码。