添加交叉溶解效果 - iOS视频创建

时间:2013-10-31 19:39:12

标签: ios avfoundation

我想从多个图像中创建一个视频,并在图像之间添加交叉溶解效果。

如何做到这一点?我知道图像可以写入视频文件,但我看不到应用效果的位置。是应该将每个图像转换为视频,然后将视频写入带有过渡效果的填充视频?

我一直在搜索,但找不到有关如何做到这一点的大量信息,例如:如何使用AVMutableComposition,如果可以创建由单个图像组成的视频,则应用交叉溶解效果。

非常感谢任何信息。

2 个答案:

答案 0 :(得分:2)

如果你想在AVFoundation的肠道中挖掘这个,我强烈建议你take a look at this presentation, especially starting at slide 74准备做大量的工作来解决这个问题......

如果您想要快几个数量级的业务,并且不介意合并第三方库,我会高度recommend you try GPUImage

您会发现将图像推入视频并随意更换它们非常简单,并且可以将任意数量的混合滤镜应用于过渡,只需通过改变混合滤镜的单个混合属性即可你的过渡发生了。

答案 1 :(得分:2)

我现在正在这样做。简而言之:您需要一个AVPlayer,其中AVPlayerItem可以为空。然后,您需要将forwardPlaybackEndTime的{​​{1}}设置为动画的持续时间。然后,您可以使用AVPlayerItem创建AVPlayerLayer。 (实际上,如果你不想在视频中放置视频,你可能不需要AVPlayer。然后重要的是,你创建一个AVPlayerLayer,用你之前的AVSynchronizedLayer创建。{this { {1}}及其保存的任何子图层都会与您的AVPlayerItem同步。然后您可以创建一些简单的AVSynchronizedLayer来保存您的图片(通过AVPlayerItem属性并添加您的CALayer contents属性上的图层。现在,这些子图层上的任何动画都会跟随CAKeyframeAnimation的时间。要启动动画,只需拨打opacity上的AVPlayerItem即可这就是播放的理论。如果你想用mp4导出这个动画,你需要使用play,但它非常相似。

代码示例请参阅code snippet to create animation