【问题标题】:Adding cross dissolve effect - iOS video creation添加交叉溶解效果 - iOS 视频创作
【发布时间】:2013-11-11 23:19:13
【问题描述】:

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

如何做到这一点?我知道图像可以写入视频文件,但我看不到在哪里应用效果。是不是应该把每张图片都转成视频,然后再把视频写成带有过渡效果的填充视频?

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

任何信息将不胜感激。

【问题讨论】:

    标签: ios avfoundation


    【解决方案1】:

    如果您想为此深入了解 AVFoundation,我强烈建议您 take a look at this presentation, especially starting at slide 74 准备好做大量工作来完成这项工作...

    如果您想以几个数量级的速度开展业务,并且不介意加入第 3 方库,我非常愿意 recommend you try GPUImage

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

    【讨论】:

    • 谢谢瑞恩。这些幻灯片几乎是我在上面找到的唯一信息,而且似乎也缺少很多信息来完全理解它。我实际上已经在这个应用程序中使用 GPUImage 来对图像应用过滤器,但我从来不知道视频的过渡效果。混合滤镜如何与编写视频一起使用?
    • 我将两个不同的 GPUImagePicture's 输入到你的混合中(也许是 GPUImageDissolveBlend?),然后设置一个每 0.1 秒左右滴答一次的 NSTimer,并在每个上增加/减少混合过滤器的 .mix 属性打钩。我还将回收 GPUImagePicture 对象并根据需要换出它们的图像,而不是每次都设置和拆除新的 GPUImagePictures。这会产生一点 addTarget/removeTarget startProcessing/stop dance,但对用户来说应该是无缝的。
    • 哦,你会在你的界面中定位一个 GPUImageView 和你的溶解混合过滤器中的一个 GPUImageMovieWriter。然后你可以同时让用户播放和录制到文件中。如果您遇到任何障碍,请随时私下联系我。 ryancumley dot com 的联系信息
    【解决方案2】:

    我现在正在这样做。简而言之:您需要一个AVPlayer,在其中放置一个可以为空的AVPlayerItem。然后,您需要将AVPlayerItemforwardPlaybackEndTime 设置为动画的持续时间。然后,您创建一个AVPlayerLayer,并使用您的AVPlayer 启动该AVPlayerLayer。 (实际上,如果您不将视频放入动画中,也许您不需要AVPlayerLayer。然后重要的部分,您创建一个AVSynchronizedLayer,您使用之前的AVPlayerItem 启动它。这个AVSynchronizedLayer 和它的任何子层持有将与您的AVPlayerItem 同步。然后您可以创建一些简单的CALayer 持有您的图像(通过contents 属性并将您的CAKeyframeAnimation 添加到opacity 属性上的图层。现在任何动画在那些子层将跟随您的AVPlayerItem 的时间。要启动动画,只需在您的AVPlayer 上调用play。这是播放的理论。如果您想将此动画导出为mp4,您需要使用@987654340 @ 但它非常相似。

    代码示例见code snippet to create animation

    【讨论】:

    • 感谢 Nicolas,我已经使用 UIView + transitionFromView:toView:duration:options:completion 找到了一种更简单的显示方式:我会再看一下 AVVideoCompositionCoreAnimationTool,但可能会像 Ryan 提到的那样使用 GPUImage。
    • @NicolasManzini forwardPlaybackEndTime 不起作用,对你有用吗
    • 确实它不适用于 AVSynchronizedLayer 你需要有一个播放器项目具有动画所需的持续时间,否则它就不会移动。
    猜你喜欢
    • 2020-02-21
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 2013-05-18
    相关资源
    最近更新 更多