美文网首页Graphics
GPUImage2 的导入

GPUImage2 的导入

作者: 金嗓子卡卡 | 来源:发表于2018-11-29 17:39 被阅读35次

首先,GPUImage有3个版本分别是:GPUImage,GPUImage2,GPUImage3

GPUImage 最早的OC版本

GPUImage2 相当于Swift版本

GPUImage3 Swift 区别于1和2,将底层框架由OPENGL(ES)改为METAL,性能更好

不过。。。各种功能未完成 - -!

GPUImage3功能缺失

因为项目使用的就是swift语言,所以最终选择了GPUImage2.

不过不论是OC版,还是swift版本,当使用预览页播放视频时(oc:GPUImageView,Swift:RenderView),都没有声音!!

于是本人很直接的手动添加avplayer,同步播放音频。。。

问题来了!音画不同步!!!

最后发现,GPUImage作者说他压根没考虑这点,也就是说,接口都没给你,必须代码侵入

经过一番周折,在git上找到了GPUimage2的分支:

https://github.com/joshbernfeld/GPUImage2

不知道为什么这个作者申请的提交没有被GPUImage2的作者批准合并到自己的master中

因为git上项目的结构问题,最简单的方式是手动将工程拖入自己的项目,不过,为了顺眼,我找到了使用pod导入的方法:

项目目录下新建文件

GPUImage2.podspec :

Pod::Spec.new do |s| 

s.name = 'GPUImage2' 

s.version = '0.1.0' 

s.license = 'BSD' 

s.summary = 'An open source iOS framework for GPU-based image and video processing.' 

s.homepage = 'https://github.com/joshbernfeld/GPUImage2' 

s.author = { 'Brad Larson' => 'contact@sunsetlakesoftware.com' } 

# This commit on that fork of GPUImage should contain just upgrades needed for Swift 4 compatibility. See https://github.com/BradLarson/GPUImage2/pull/212 

# Replace with https://github.com/BradLarson/GPUImage2.git when merged 

# into BradLarson's repository.

s.source = { :git => 'https://github.com/joshbernfeld/GPUImage2', :commit => '21ac77dfef1bcbb40a5fade6f48a911d23601bea' } 

s.source_files = 'framework/Source/**/*.{swift}','framework/Source/**/*.{h}','framework/Source/**/*.{m}'

s.resources = 'framework/Source/Operations/Shaders/*.{fsh}' 

s.requires_arc = true s.xcconfig = { 'CLANG_MODULES_AUTOLINK' => 'YES', 'OTHER_SWIFT_FLAGS' => "$(inherited) -DGLES"} 

s.ios.deployment_target = '8.0' 

s.ios.exclude_files = 'framework/Source/Mac', 'framework/Source/Linux', 'framework/Source/Operations/Shaders/ConvertedShaders_GL.swift' s.frameworks = ['OpenGLES', 'CoreMedia', 'QuartzCore', 'AVFoundation'] 

end

其中要注意的是:

s.source 是下载的链接地址,我这里使用的是分支,并不是原版GPUImage2

s.source_files 是需要下载的文件,这里除了.h还有.m文件,是因为这个版本的声音播放需要两份OC文件

podfile中添加:

pod 'GPUImage2', :podspec => './GPUImage2.podspec'

然后就是调用pod install

完成后,如果编译报错

将pod下的该framework语言改为swift4即可

另,如果编写podspec时,下载的文件源只写了swift,那么最后项目编译会报找不到两份OC文件的错,下载文件手动添加进pod下,并设置.h文件为public

最后在GPUImage2-umbrella中添加OC头文件即可,并不需要手动在pods中创建桥文件,否则会报错

最后的最后,如果有人使用Carthage编译GPUImage2为framework成功了,望留言指教指教🤣

相关文章

网友评论

    本文标题:GPUImage2 的导入

    本文链接:https://www.haomeiwen.com/subject/fepfcqtx.html