我可以从MPMoviePlayer中的缩略图生成CGImage。我想要做的是在图像上应用一个过滤器,并尽可能快地在设备上显示它(可能在UIImageView中)。
这里需要注意的是,我需要将滤镜应用于视频的每一帧,以便用户在视频流中看到过滤后的图像,没有滞后。
目前我获得缩略图,应用我的过滤器,并将我的UIImageView.image设置为此过滤后的图像。过滤器工作正常,图像显示,但应用程序确实滞后。有什么方法可以加快速度吗?
我也尝试使用CAdisplaylink,因为这有助于我加速在屏幕上飞来飞去的多个UIImages,但在这种情况下它没有做任何事情。任何帮助将不胜感激。
谢谢。
答案 0 :(得分:0)
使用Brad Larsons GPUImage框架。简而言之......它很棒。
以下是概述: GPUImage框架是一个获得BSD许可的iOS库,可让您将GPU加速滤镜和其他效果应用于图像,实时摄像机视频和电影。与Core Image(iOS 5.0的一部分)相比,GPUImage允许您编写自己的自定义过滤器,支持部署到iOS 4.0,并且具有更简单的界面。但是,它目前缺少核心图像的一些更高级功能,例如面部检测。
对于像处理图像或实时视频帧这样的大规模并行操作,GPU比CPU具有一些显着的性能优势。在iPhone 4上,简单的图像过滤器在GPU上执行的速度比基于CPU的等效过滤器快100多倍。
以下是包含git存储库页面的link https://github.com/BradLarson/GPUImage,详细信息和示例项目,其中使用了许多过滤器进行实时处理。