前言
FFmpeg的大名想必做过视频播放的同学都听过、用过,很多著名的视频播放库都是基于它开发的,运用比较广泛的有VLC、kxmovie、vitamio等。但是每个使用FFmpeg及其衍生类库是都需要踩一个坑,那就是编译FFmpeg。这里我们不推荐直接从github上直接clone、编译,推荐使用一个比较牛逼的编译脚本,脚本下载地址:https://github.com/kewlbear/FFmpeg-iOS-build-script 。
具体步骤
-
下载编译脚本
git clone https://github.com/kewlbear/FFmpeg-iOS-build-script
下载下来之后是这个样子
执行编译脚本
cd FFmpeg-iOS-build-script
./build-ffmpeg.sh
如下图:
-
执行后自动编译
FFmpeg(这个脚本下下来的是最新的3.1.1)的源文件包并不算太大,整个文件夹也就55.9MB,但是文件个数非常之多,而且 由于要编译armv7、armv7s、arm64等众多指令集使用的库,所以编译时间比较长,具体多久要看电脑性能。本人16G 的Mac Pro也需要将近10分钟。
编译成功显示:
由于编译时会用到Xcode,因此必须在OSX环境下进行
编译成功后我们文件结构将变为:
我们可以看到原先的目录下多了三个文件夹,分别是FFmpeg-iOS、ffmpeg-3.1.1、scratch、thin,FFmpeg-iOS是我们将要拖到项目里使用的文件夹,ffmpeg-3.1.1是FFmpeg的源码,thin是各个arm指令集的lib,他们相当于是FFmpeg-iOS的一个拆分,你可以使用lipo命令将他们合并起来使用,最后一个scratch是做什么的,本人没有研究过,大家可以继续研究。
关于arm指令集
上面我们提到了指令集的概念,Apple的指令集有armv6、armv7、armv7s、x86、i1386等等,这些事处理器的指令集,具体机型的对应关系百度一下你就知道,这里不再赘述。FFmpeg的编译是可以修改支持的指令集的,在build-ffmpeg.sh脚本中有这个一句话:
ARCHS="arm64 armv7 x86_64 i386"
可以在这里进行增减,保存退出,重新安装前面的方法重新编译即可。