iOS编译libx264+libfdk-aac+FFmpeg

来源:互联网 发布:桐乡淘宝客服招聘信息 编辑:程序博客网 时间:2024/06/05 00:59

最近在学习FFmpeg,感觉基本流程还算清楚明白,不过之前一直是在Mac环境下学习,一个brew install一步搞定,不过我最终的项目是在iOS上,所以今天就试着编译了一下iOS环境下的FFmpeg,还好网上有这方面的文章,我跟着一步一步终于把FFmpeg给编出来了,现在做一个汇总,免得到时候再次编译的时候又要重新去寻找,此次基于FFmpeg-3.4版本编译

  • 编译libx264
  • 编译libfdk-aac
  • 编译FFmpeg
  • FFmpeg-iOS的使用

编译libx264

首先编译libx264

第一步:下载libx264源码: libx264下载地址

第二步:下载libx264-iOS的编译脚本,libx264编译脚本下载地址

下载完成之后,我们可以打开这个脚本,如下图:

可以看到,脚本上指定的源代码目录是脚本目录下的x264文件夹,所以我们将下载的libx264的文件夹名字修改为x264, 并将文件夹移动到脚本所在目录下,当然也可以修改SOURCE的内容。

第三步:chmod u+x ./build-x264.sh 为脚本添加执行权限,然后./build-x264.sh执行脚本,完成之后人,会生成一个thin-x264的文件夹,里面包含了arm64、armv7、armv7s、i386、x86-64等等头文件和lib文件,如下图所示:

第四步:执行./build-x264.sh lipo 命令,将以上的几个lib文件集成到一个lib中。至此libx264编译完成

编译x264参考文章:编译libx264

编译libfdk-aac

第一步:下载libfdk-aac源码:libfdk-aac源码

第二步:brew install automake libtool 运行该命令,安装automake和libtool

第三步: 下载libfdk-aac的编译脚本:libfdk-aac编译脚本

同上,打开libfdk-aac的编译脚本,移动libfdk-aac的源代码文件夹至脚本目录下并修改名称为fdk-aac-0.1.5,如下所示:

第四步:切换到目录fdk-aac-0.1.5目录下,并执行./autogen.sh

第五步:切换到上层目录,添加权限并执行build-fdk-aac.sh

第六步:执行./build-fdk-aac.sh lipo 命令集成一个lib

至此libfdk-aac 编译完成,编译libfdk-aac参考文章:编译fdk-aac

编译FFmpeg

第一步:下载FFmpeg iOS编译脚本:FFmpeg iOS编译脚本下载地址

第二步:将以上编译的fdk-aac和x264移动到编译脚本下,只需要移动最后一步生成的包含头文件及lib文件的目录。

第三步:编辑FFmpeg iOS 编译脚本,取消fdk-aac及x264的注释,并修改路径指向对应的目录,如下图所示:

第四步:此时如果我们执行build-ffmpeg.sh将会先进行FFmpeg源代码的下载,下载完成之后,接下来会出现以下问题,如图所示:

libfdk_aac is incompatible with the gpld --enable-nonfree is not specified.

此时,我们打开build-ffmpeg.sh,并修改以下一行,在最后添加–enable-nonfree选项,如下所示:

此时便可以顺利编译FFmpeg-iOS

到此FFmpeg编译结束,编译FFmpeg参考文章:编译FFmpeg-iOS

FFmpeg-iOS的使用

打开Xcode,新建一个single view project,然后添加对应的lib文件并修改头文件搜索目录,但是除了这些之外,我们还需要添加其他的文件,如下所示:

  1. libbz2.tbd
  2. libz.tbd
  3. libiconv.tbd
  4. CoreMedia.framework
  5. VideoToolbox.framework
  6. AudioToolbox.framework
  7. AVFoundation.framework

在我的使用过程中,少添加任何一个都会报链接错误。修改AppDelegate.m为AppDelegate.mm,包含对应头文件,在-application:didFinishLaunchingWithOptions:方法中添加av_regist_all()编译运行成功。即表示整个编译成功。

最后感谢这些大牛的奉献,是他们写的神级Shell,让我们省去了很多功夫。最后附上我编译好的FFmpeg-iOS供有需要的朋友使用:FFmpeg-iOS

原创粉丝点击