tne*_*nev 1 video video-processing core-image ios opengl-es-2.0
我一直在研究使用最新技术在iOS上进行视频处理的最佳方法,并得到了一些不同的结果.似乎有办法用Core Image,OpenGL和一些开源框架来做到这一点.我想避开开源选项,以便我可以了解幕后发生的事情,所以问题是:
iOS上预先录制的视频处理(滤镜,亮度,对比度等)的最佳选择是什么?
我知道Core Image有很多很棒的内置过滤器,并且有一个相对简单的API,但我没有找到任何有关如何将视频分解为图像然后重新编码的资源.对此主题的任何帮助都非常有用,谢谢.
正如您所说,您有几种选择.无论您认为"最佳",都取决于您的具体需求.
可能你最简单的非开源路线就是使用Core Image.从Core Image视频过滤中获得最佳性能仍然需要一些工作,因为您需要确保为此进行GPU端处理.
在我的GPUImage框架中的基准测试应用程序中,我有以优化方式使用Core Image的代码.为此,我设置了AV Foundation视频捕获并从像素缓冲区创建了一个CIImage.核心图像上下文设置为渲染到OpenGL ES上下文,并且其上的属性(颜色空间等)设置为快速渲染.我在那里使用的设置是Core Image团队在与他们讨论此事时提出的设置.
我在这里讨论原始的OpenGL ES路由(并在那里有一个链接的示例应用程序),但确实需要一些设置.它可以为您提供比Core Image更多的灵活性,因为您可以编写完全自定义的着色器来以您在Core Image中无法实现的方式处理图像.过去,它比Core Image更快,但现在实际上没有性能差距.
但是,构建自己的OpenGL ES视频处理管道并不简单,它涉及一堆样板代码.这就是为什么我写这个,我和其他人花了很多时间来调整它的性能和易用性.如果您担心不了解这一切是如何工作的,请阅读该框架内的GPUImageVideo类代码.这就是从相机中拉出帧并开始视频处理操作的原因.它比我的基准测试应用程序稍微复杂一点,因为它从相机中获取YUV平面帧并在大多数情况下将它们转换为着色器中的RGBA,而不是抓取原始RGBA帧.后者稍微简单一些,但前者有性能和内存优化.
以上所有内容都是关于实时视频,但预先录制的视频大致相同,只有不同的AV基金会输入类型.我的GPUImageMovie类中包含代码,用于录制预先录制的电影并处理单个帧.它们最终与您从相机拍摄的帧相同.
| 归档时间: |
|
| 查看次数: |
1963 次 |
| 最近记录: |