AVMutableVideoComposition 中的交叉淡入淡出

Posted

技术标签:

【中文标题】AVMutableVideoComposition 中的交叉淡入淡出【英文标题】:Cross-fade within AVMutableVideoComposition 【发布时间】:2011-04-19 08:36:01 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

我从 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——以指数方式增加必要的编码。

【讨论】:

彼得,我已经安装并运行了这个应用程序。我想知道,如何将剪辑放入应用程序中进行测试? 我没有尝试让“文件共享”视图在该演示中工作,因为在我的应用程序中我修改了一些代码并使用 UIImagePickerController 来获取剪辑。看起来像正在使用 NSDocumentDirectory 中的任何剪辑,因此如果您可以将它们放入其中,它们应该会显示出来。 网址已经失效,这是新的developer.apple.com/library/ios/samplecode/AVCustomEdit/… 这不会在 iOS 9 中转换 谢谢。它在 iOS 9 中有哪些具体问题?

以上是关于AVMutableVideoComposition 中的交叉淡入淡出的主要内容,如果未能解决你的问题,请参考以下文章

在播放期间更改 AVPlayerItem 的 videoComposition 属性 (AVMutableVideoComposition)

AVMutableVideoComposition - CoreAnimation:警告,删除了未提交 CATransaction 的线程

在 AVMutableVideoComposition 中创建一个按时间间隔更改的 CATextlayer

AVVideoCompositionCoreAnimationTool 和 CALayer 在纵向模式下?

如何使用 AVFoundation 编辑和播放 HDR 视频。