GPUImage简单实用及碰到的问题

火星殖民
• 阅读 2470

正式开始之前先介绍一下GPUImage,这是一款基于OpenGL ES 2.0的开源图像处理库。在iOS上将OpenGL ES的使用封装成Objective-C接口,可以用来给图像、相机视频、视频等添加滤镜等渲染操作。GPUImage一代已经不再维护,OC只能给iOS和Mac使用;同时有GPUImage2使用Swift(基于Swift 3)开发,可以给Mac, iOS和Linux使用;最新的GPUImage3仍在开发完善中,基于Swift4,并且将OpenGL ES替换成苹果的Metal,由于是苹果官方封装GPU方法,可以预见会比使用OpenGL ES的性能效率更高。本文使用的仍是第一代GPUImage。
接入GPUImage使用cocoapods直接接入就行,就不再赘述。下面是一个简单的滤镜使用:
GPUImage简单实用及碰到的问题
GPUImage使用有三个关键点,input, output, filter(filter也是output但主要实现了滤镜,所以分开说)。output一般是用来承载图像内容输出,可以是GPUImageUIElement(通过UIView来创建并承载整个UIView的内容), GPUImagePicture(使用UIImage或者CGImage之类的图像来创建);filter就是所使用的滤镜,可以使用GPUImage自带的比如GPUImageGaussianBlurFilter, GPUImageColorInvertFilter等等,当然也可以自建Filter来实现一些自己所需要的滤镜,当然也需要一些OpenGL的功底;input则是内容输入需要GPUImage进行一些处理的,下面用一个MovieWriter进行视频和一个动态画面进行合成来举例:
GPUImage简单实用及碰到的问题
使用中第一版没有提到声音问题所以没有发现,第二版需要使用视频原声音并录制进去,查了一下可以这样使用:
GPUImage简单实用及碰到的问题
录制开始会有随机闪退问题,网上查了一下,大致是因为音频处理比视频处理快,当音频处理完直接callback去做渲染处理了,但这时视频这帧还没有加载完成,导致处理失败崩溃,网上有一个替换GPUImageMovieWriter.m源文件的方法来规避这个问题,但我尝试了一下仍然会发生,就不贴出来了。暂时也没有更好的办法来修复这个问题,由于时间紧迫,我采取只传递声音而取消写入视频中,使用ffmpeg进行音视频合成(或其他视频处理工具,因为本身项目有视频剪切使用了ffmpeg)。如果以后对这方面有更深入的了解和研究会继续更新如何解决这个问题。

PS: 说个题外关于视频编码问题,腾讯家的qq和微信SDK分享视频只能分享网络源无法分享本地源,但如果通过苹果系统自带的分享则可以分享视频。最新版部分视频会发生视频压缩失败的问题,无法上传。起先认为是视频编码问题,通过ffmpeg重新使用h264或者libx264都无法解决;后来发现那些无法通过腾讯系压缩的是音频重新合成过的,所以我对音频重新编码,使用的是网络上流媒体目前比较通用的aac,结果让我大失所望,还是不行!网上也找不到腾讯有关这两款分享视频所需要的编码问题,而如果我不通过ffmpeg进行编辑,原视频的H.264+aac就是好的,没有办法只能采取控制变量法来一个一个试编码。最后测出来是视频H.264没有问题,音频则需要使用ac3来进行编码才能通过。

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
FFmpeg命令行工具学习(四):FFmpeg 采集设备
在使用FFmpeg作为编码器时,可以使用FFmpeg采集本地的音视频采集设备的数据,然后进行编码、封装、传输等操作。例如,我们可以采集摄像头的图像作为视频,采集麦克风的数据作为音频,然后对采集的音视频数据进行编码,最后将编码后的数据封装成多媒体文件或者作为音视频流发送到服务器上(流媒体)。出于硬件环境和篇幅的限制,本文主要讲的时Mac平台下通过F
Wesley13 Wesley13
3年前
Objective
一、基本概念ObjectiveC(简称OC)是iOS开发的核心语言,苹果公司在维护,在开发过程中也会配合着使用C语言、C,OC主要负责UI界面,C语言、C可用于图形处理。C语言是面向过程的语言,OC是在C语言基础上加上了一层面向对象的语法(将复杂面向对象语法去掉了)。我们可以使用OC开发MacOSX平台和IOS平台的应用程序。2
Wesley13 Wesley13
3年前
初探 Objective
作者:Cyandev,iOS和MacOS开发者,目前就职于字节跳动0x00前言异常处理是许多高级语言都具有的特性,它可以直接中断当前函数并将控制权转交给能够处理异常的函数。不同语言在异常处理的实现上各不相同,本文主要来分析一下ObjectiveC和C这两个语言。为什么要把ObjectiveC和
Easter79 Easter79
3年前
SwiftCommon之Camera相机
概述IOS中调用设备的相机拍照、录制视频,使用UIImagePickerController类,根据不同的SourceType来区分是拍照还是录视频。SCCameraimportFoundationimportUIKitimportMobileCoreServicesp
玉宇琼楼 玉宇琼楼
1年前
PS2023英文版如何设置成中文版,Photoshop2023如何汉化
Photoshop2023是一款由AdobeSystems开发和发行的图像处理软件。Photoshop主要处理以像素所构成的数字图像。使用其众多的编修与绘图工具,可以有效地进行图片编辑工作。ps有很多功能,在图像、图形、文字、视频、出版等各方面都有涉及。使
燕青 燕青
1年前
FCPX/AE/Pr视频稳定防抖动插件Lock and Load X 2.0
是一款专业的视频稳定插件,适用于Mac环境。以下是关于LockandLoadX的详细介绍:LockandLoadX是一款强大的视频稳定插件,为Mac用户提供了先进的图像稳定技术。它能够轻松修复和改善摄像机拍摄的抖动和晃动问题,使视频更加平滑、稳定。该插件适
流浪剑客 流浪剑客
1年前
「Macos超强图片处理工具」Affinity Photo for Mac 最新中文版
是一款专业的图像编辑软件,适用于Mac电脑,具有广泛的应用领域,包括平面设计、摄影后期处理、图像修复等。AffinityPhotoforMac提供了丰富的工具和功能,包括图像调整、色彩管理、图层管理、滤镜效果、批处理等,可以满足用户在不同场景下的需求。它支
燕青 燕青
1年前
Macos专业修图工具:Affinity Photo for Mac破解下载 最新激活 支持M1
是一款专业的图像编辑软件,适用于Mac电脑,具有广泛的应用领域,包括平面设计、摄影后期处理、图像修复等。AffinityPhotoforMac提供了丰富的工具和功能,包括裁剪、调整色彩、滤镜、图层管理、绘画、修饰等,可以满足用户在不同场景下的需求。它支持多
燕青 燕青
1年前
图像编辑工具:Pixelmator Pro for Mac 中文版
是一款为Mac用户精心打造的图片处理及编辑软件。它的界面设计简洁直观,操作起来非常便捷,使得用户可以快速完成各种图片处理任务。PixelmatorPro具备丰富的编辑功能,包括图像调整、滤镜效果、选区编辑、文字添加等,可以满足用户在图片处理和设计方面的各种
公孙晃 公孙晃
1年前
「最新」Snagit for mac v2024.0.1中文破解版 支持M1
是一款非常实用的屏幕截图和视频录制工具,适用于Mac用户。它具有强大的编辑功能,可以帮助您轻松地创建高质量的截图和视频,并且还支持录制屏幕上的操作。使用Snagit,您可以轻松地截取整个屏幕、窗口、选定的区域或滚动页面,并将其保存为图像或视频文件。此外,该
公孙晃 公孙晃
1年前
图像视觉特效处理工具:Boris FX Optics for mac破解下载
BorisFXOpticsMac是一款为Mac用户设计的图像处理和特效添加管理工具,它可以模拟光学相机滤镜、专用镜头、胶片库存和颗粒、镜头耀斑、光学实验室过程、色彩校正以及自然光和摄影效果。这款软件可以帮助用户对摄影作品进行后期光源模拟的调整,让照片拥有发