2

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

如何才能做到这一点?我知道图像可以写入视频文件,但我看不到在哪里应用效果。是否应该将每张图像转换为视频,然后将视频写入具有过渡效果的填充视频?

我四处搜索并找不到太多关于如何做到这一点的信息,例如如何使用 AVMutableComposition 以及创建由单个图像组成的视频是否可行,然后应用交叉溶解效果。

任何信息将不胜感激。

4

2 回答 2

3

如果您想为此深入了解 AVFoundation,我强烈建议您看一下这个演示文稿,尤其是从第 74 张幻灯片开始准备好做大量工作来完成这个...

如果您想以几个数量级的速度开展业务,并且不介意加入 3rd 方库,我强烈建议您尝试 GPUImage

您会发现将图像推送到视频中并随意交换它们非常简单,以及将任意数量的混合过滤器应用于过渡,只需在过渡发生时改变混合过滤器的单个混合属性.

于 2013-10-31T21:39:18.593 回答
2

我目前正在这样做。简而言之:您需要一个AVPlayer可以AVPlayerItem为空的对象。forwardPlaybackEndTime然后,您需要将 设置为AVPlayerItem动画的持续时间。然后,您创建一个AVPlayerLayer您使用AVPlayer. (实际上,AVPlayerLayer如果您不将视频放入动画中,则可能不需要。然后重要的部分是,您创建一个AVSynchronizedLayer您的前一个启动的.this 以及它拥有的任何子层将与您的同步AVPlayerItem。然后您可以创建一些简单地保存您的图像(通过属性并将您添加到属性上的图层。现在这些子图层上的任何动画都将跟随您的时间AVSynchronizedLayerAVPlayerItemCALayercontentsCAKeyframeAnimationopacityAVPlayerItem. 要开始动画,只需调用play您的AVPlayer. 这就是回放的理论。如果你想在 mp4 中导出这个动画,你需要使用它,AVVideoCompositionCoreAnimationTool但它非常相似。

有关代码示例,请参见代码片段以创建动画

于 2013-10-31T22:27:57.667 回答