前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最优秀的开源库之GPUImage

最优秀的开源库之GPUImage

作者头像
音视频_李超
发布2020-04-01 20:42:19
8990
发布2020-04-01 20:42:19
举报

前言

近期想了解一下 IOS 下是如何进行音视频采集和渲染的。在学习一门新的知识时,很多人都有自己的学习方法,有的是买书学习,有的是看论坛等等不一而终。我的学习习惯是直接找一个比较好的开源项目,去分析它的代码。这样即可以了解到新的知识,又可以知道该如何编写正确的代码。自己的一点小心得哈。

言归正转,我们都知道对于视频的采集,IOS提供了 AVFoundtion 库,这个库非常强大,可以做很多事情。但如果我们要对里边的每个函数都仔细的过一遍的话还是要花不少时间的,而且还可能有很多坑在等着我们。是否有这方面比较好的开源库呢?这样我们不就轻松的跳过了这些坑了吗?于是我发现了GPUImage库。

GPUImage在github上有16304个星,哇,能有几百个星就已经很了不起了,它居然能有上万的星,可见它人气是非常旺的。下面我们来看看 GPUImage 都能干些什么吧。

GPUImage

GPUImage是一个BSD许可的IOS库,它使用GPU加速对图像,实时视频和电影做美颜,灰度等各种特效。在大规模并行运算处理图像或实时视频时,GPU相对于CPU有显著的性能优势。在iPhone4上,一个简单的图像过滤器在GPU上执行的速度比CPU的过滤器快100倍以上。然而,在GPU上运行自定义过滤器需要大量处理OpenGL ES相关的代码。而GPUImage帮我们解决了这些问题,它对 OpengGL ES做了非常好的封装,我们只要调用简单的几个接口就可以做出各种特效来。

GPUImage总体结构

GPUImage使用OpenGL ES 2着色器进行图像和视频处理速度远远超过基于CPU程序做的。而且它提供了简化的Objective-C接口,隐藏了OpenGL复杂的交互。这个接口允许您将图像和视频作为输入源,经过过滤器,最后得到处理的图像或视频的画面。

图像或视频帧可以通过GPUImageVideoCamera、GPUImageStillCamera、GPUImagePicture及GPUImageMovie类获得。

  1. GPUImageVideoCamera: 从Camera获取的实时视频。
  2. GPUImageStillCamera: 从Camera获取到的图片。
  3. GPUImagePicture: 静态图片。
  4. GPUImageMovie: 电影

图片或帧上传到OpengGL ES后做为纹理,然后将这些纹理传递给处理链中的下一个对象。

例如,一个应用程序,从Camera获取视频,转换视频到深褐色调,然后显示视频到屏幕上。将建立一个链,看起来像下面这样子:

GPUImageVideoCamera -> GPUImageSepiaFilter -> GPUImageView

效果对比图

依赖库

GPUImage依赖下面的几个库:

CoreMedia: AVFoundation常用的功能。 CoreVideo: OpenGL ES 使用的视频基础库。 OpenGLES: 用于图像渲染。 AVFoundation: 音视频基础库。 QuartzCore: 用于渲染、组合和动画视觉元素。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • GPUImage
  • GPUImage总体结构
  • 依赖库
相关产品与服务
媒体处理
媒体处理(Media Processing Service,MPS)是一种云端音视频处理服务。基于腾讯多年音视频领域的深耕,为您提供极致的编码能力,大幅节约存储及带宽成本、实现全平台播放,同时提供视频截图、音视频增强、内容理解、内容审核等能力,满足您在各种场景下对视频的处理需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档