我想从许多图像创建一个视频,并在图像之间添加交叉溶解效果。
如何才能做到这一点?我知道图像可以写入视频文件,但我看不到在哪里应用效果。是否应该将每张图像转换为视频,然后将视频写入具有过渡效果的填充视频?
我四处搜索并找不到太多关于如何做到这一点的信息,例如如何使用 AVMutableComposition 以及创建由单个图像组成的视频是否可行,然后应用交叉溶解效果。
任何信息将不胜感激。
我想从许多图像创建一个视频,并在图像之间添加交叉溶解效果。
如何才能做到这一点?我知道图像可以写入视频文件,但我看不到在哪里应用效果。是否应该将每张图像转换为视频,然后将视频写入具有过渡效果的填充视频?
我四处搜索并找不到太多关于如何做到这一点的信息,例如如何使用 AVMutableComposition 以及创建由单个图像组成的视频是否可行,然后应用交叉溶解效果。
任何信息将不胜感激。
如果您想为此深入了解 AVFoundation,我强烈建议您看一下这个演示文稿,尤其是从第 74 张幻灯片开始准备好做大量工作来完成这个...
如果您想以几个数量级的速度开展业务,并且不介意加入 3rd 方库,我强烈建议您尝试 GPUImage
您会发现将图像推送到视频中并随意交换它们非常简单,以及将任意数量的混合过滤器应用于过渡,只需在过渡发生时改变混合过滤器的单个混合属性.
我目前正在这样做。简而言之:您需要一个AVPlayer
可以AVPlayerItem
为空的对象。forwardPlaybackEndTime
然后,您需要将 设置为AVPlayerItem
动画的持续时间。然后,您创建一个AVPlayerLayer
您使用AVPlayer
. (实际上,AVPlayerLayer
如果您不将视频放入动画中,则可能不需要。然后重要的部分是,您创建一个AVSynchronizedLayer
您的前一个启动的.this 以及它拥有的任何子层将与您的同步AVPlayerItem
。然后您可以创建一些简单地保存您的图像(通过属性并将您添加到属性上的图层。现在这些子图层上的任何动画都将跟随您的时间AVSynchronizedLayer
AVPlayerItem
CALayer
contents
CAKeyframeAnimation
opacity
AVPlayerItem
. 要开始动画,只需调用play
您的AVPlayer
. 这就是回放的理论。如果你想在 mp4 中导出这个动画,你需要使用它,AVVideoCompositionCoreAnimationTool
但它非常相似。
有关代码示例,请参见代码片段以创建动画