我已经成功地编写了一个包含多个视频剪辑的 AVMutableComposition 并且可以查看和导出它,我希望能够使用交叉淡入淡出在它们之间进行转换,所以我想使用 AVMutableVideoComposition。我找不到任何关于如何连续排列和播放几个 AVAsset 视频的示例。有没有人有一个示例说明如何将轨道添加到 AVMutableVideoComposition 与 AVMutableComposition 的 insertTimeRange 等效,或者如何设置交叉淡入淡出?
[self.composition insertTimeRange:CMTimeRangeMake(kCMTimeZero,asset.avAsset.duration)
ofAsset:asset.avAsset
atTime:self.composition.frameDuration
error:nil]
最佳答案
我从 Apple 的 WWDC 2010 Sample Code 中找到了一个名为 AVEditDemo 的示例。
https://developer.apple.com/library/ios/samplecode/AVCustomEdit/Introduction/Intro.html
示例中有很多细节,但我会总结一下:您需要同时使用 AVMutableComposition 和 AVMutableVideoComposition。将轨道单独添加到 AVMutableComposition 而不是使用更简单的 insertTimeRange,因为它允许您在轨道上设置重叠时间。轨道还需要添加到 AVMutableVideoComposition 作为具有不透明度渐变的 AVMutableVideoCompositionLayerInstructions。最后,要在 AVPlayer 中播放,您需要使用 AVMutableComposition 和 AVMutableVideoComposition 创建一个 AVPlayerItem。
似乎在 api 中深入每个级别——在这种情况下,从带有 Assets 的 MPMoviePlayer 到带有 AVComposition 的 AVPlayer,最后到 AVVideoComposition——以指数方式增加了必要的编码。
关于iphone - AVMutableVideoComposition 中的淡入淡出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3830932/