我想从多个图像中创建一个视频,并在图像之间添加交叉溶解效果。
如何做到这一点?我知道图像可以写入视频文件,但我看不到应用效果的位置。是应该将每个图像转换为视频,然后将视频写入带有过渡效果的填充视频?
我一直在搜索,但找不到有关如何做到这一点的大量信息,例如:如何使用AVMutableComposition,如果可以创建由单个图像组成的视频,则应用交叉溶解效果。
非常感谢任何信息。
答案 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
,但它非常相似。