FFmpeg for iOS 编译

前言

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
    

    下载下来之后是这个样子


    FFmpeg for iOS 编译_第1张图片
    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分钟。


    FFmpeg for iOS 编译_第2张图片
    编译过程示例图

    编译成功显示:

    FFmpeg for iOS 编译_第3张图片
    编译成功

    由于编译时会用到Xcode,因此必须在OSX环境下进行

    编译成功后我们文件结构将变为:

    FFmpeg for iOS 编译_第4张图片
    编译成功后的目录结构

    我们可以看到原先的目录下多了三个文件夹,分别是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"

可以在这里进行增减,保存退出,重新安装前面的方法重新编译即可。

你可能感兴趣的:(FFmpeg for iOS 编译)