FFMpeg简介
根据个人的理解,ffmpeg是一个多媒体转码、音视频流化传输的一个第三方开源框架,并且这个第三方库是基于C语言的(表示看不懂,一般看不懂的东西才是牛逼的)。 iOS平台下的ffmpeg主要包括以下一些功能:影音的解码、编码、编码转换、混合、抽取、串流和滤镜:相关博客:iOS9 新滤镜介绍、基于GPUImage的实时美颜滤镜。
FFMpeg集成步骤
第一步:下载FFmpeg脚本地址,获取得到如下图所示的文件夹:
![](http://upload-images.jianshu.io/upload_images/1678515-b9fcedd9cbd18b52.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
Paste_Image.png
在这里我是将文件夹放到了桌面,可以查看此时的文件目录
![](http://upload-images.jianshu.io/upload_images/1678515-4468a731a4a90365.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
Paste_Image.png
你会发现只包含了三个文件。
第二步:下载完整的ffmpeg支持库。
首先打开终端,刚开下载的文件的目录:cd 文件目录。这里我的目录是在桌面,所以:cd /Users/lxh/Desktop/FFmpeg-iOS-build-script-master 然后输入:./build-ffmpeg.sh 随后便开始了漫长的下载过程。等完全下载完成以后你会发现,桌面上的文件夹(刚下载的)多了好多的文件。,如图所示:
![](http://upload-images.jianshu.io/upload_images/1678515-60d54fa30ddf0184.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
Paste_Image.png
这个就是我们刚才通过终端下载的ffmpeg的编译库。
其中FFmpeg-iOS文件是我们在项目中需要用到的,另外ffmpeg-3.0文件是全平台下载的编译文件(包含了TVOS、Mac OS、iOS等)。
第三步:集成 iOS平台下的ffmpeg
- 新建一个新项目,例如:LHTestFFmpeg。
- 将FFmpeg-iOS文件夹(桌面下载的ffmpeg库文件)添加到LHTestFFmpeg工程中。
- 配置头文件搜索路径:在工程文件->Bulid Setting->Search Paths->Header Search Paths添加$(SRCROOT)/$(PRODUCT_NAME)/FFmpeg-iOS/include,(请根据自己实际路径更改)
- 在工程中新建ffmpeg文件夹,并从ffmpeg-3.0的文件中添加如下八个文件:
添加完成如下所示:
Paste_Image.png
Paste_Image.png - command+B编译会发现报这个错误:
'config.h' file not found
,这是由于找不到config.h文件,不要紧,去桌面源文件中找。于是我们在桌面文件夹中找到scratch文件夹,随便打开一个文件夹找到config.h ,拖到工程中。编译后发现这个问题得到了解决,此时工程结构如下:
Paste_Image.png - 编译后,会发现又出现了如下的问题:
'libavcodec/avcodec.h' file not found
和'compat/va_copy.h' file not found
,这个问题是由于没有找到对应的文件,我们继续到ffmpeg-3.0
对应的文件夹中去查找,并添加。添加规则如下:compat/va_copy.h
这个就是要在ffmpeg-3.0中的compat文件夹
中去找va_copy.h
文件。libavcodec/avcodec.h
就是要到ffmpeg-3.0
中的libavcodec文件夹
中去查找avcodec.h
。然后依次在工程的FFmpeg-iOS文件夹下的include文件夹
下创建相应的文件夹,例如:compat
、libavcodec
文件夹,并添加相关文件。
这一步是最繁琐的也是最容易出错的,这里不懂得可以给我回复,我会及时回答的。 - 将所有的文件导入以后,会得到如下结构的工程列表:
Paste_Image.png
8.添加工程所缺的库文件,编译后,会发现编译成功了