ffmpeg编译

本文介绍了在Mac OS 10.11环境下,如何手动编译libx264以包含arm64、armv7s、armv7、x86_64、i386架构,并详细讲述了每个步骤,包括使用一键编译脚本、手动编译不同架构的包以及最后将它们合并为fat包。随后,文章讲解了如何编译带有x264的ffmpeg包,并在项目中使用编译后的ffmpeg及libx264库。
摘要由CSDN通过智能技术生成
整理备用。在编译ffmpeg的之前,我们要先编译x264。原文地址:http://blog.sina.com.cn/s/blog_47522f7f0102vcbj.html
在成功编译FFMpeg之后,调用某些FFMpeg的命令还需要用到libx264,因此需要额外编译libx264并打包在FFMpeg中

1. 编译环境:

Mac OS 10.11 XCode6.1

2. libx264的编译

编译包需要符合arm64、armv7s、armv7、x86_64、i386这几个架构。前面3个是给真机使用的,后面2个是给模拟器使用的。目前使用FFmpeg-iOS-build-script作者写的一键编译脚本只能编译出适用于模拟器的.a包,适用于真机的包还需要自己手动编译。有时间可以研究它的编译脚本源码,添加上手动编译的代码,这里先做一个总结。

(1)首先到http://www.videolan.org/developers/x264.html 下载最新的libx264源码包,解压之后是一个含snapshot-xxxx的一个文件夹,把它拷贝到随便一个文件夹下,重命名为x264;

(2)到https://github.com/kewlbear/x264-ios 下载x264的一键编译脚本文件,把它放到跟x264文件夹同级的地方;

(3)运行脚本./build-x264.sh;

(4)脚本运行完毕之后,会多出几个文件夹:x264-iOS,scratch-x264,thin-x264。其中x264-iOS是最终的输出,里面有include和lib两个文件夹。lib文件夹里面只有*.a一个文件。如果顺利的话,这个包是一个fat包,是包含了arm64、armv7s、armv7、x86_64、i386这几个架构的,但是在我的机器上,用lipo命令看,只有x86_64、i386这两种架构,具体原因还没有搞清楚。因此我们还需要手动编译arm64、armv7s、armv7的包,继续下一步;

(5)再拷贝一份源码出来,放到另外一个文件夹下,在命令行中进入这个文件夹;

(6)编译armv7的包:进入源码的文件夹后,在命令行中输入

 

CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang  

./configure --host=arm-apple-darwin --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk 

--prefix='build' --extra-cflags='-arch armv7' --extra-ldflags='-arch armv7 -L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/usr/lib/system' 

--enable-pic --extra-asflags='-arch armv7'

注意修改里面的iPhoneOS版本。

如果config成功,命令行会提示可以执行make命令了,先不急着执行make。手动copy 一个新版的gas-preprocessor.pl到extras目录下面。gas-preprocessor.pl我用的是https://git.libav.org/?p=gas-preprocessor.git;a=blob;f=gas-preprocessor.pl;h=44d11178667ece04df993e50023b41155d53582a;hb=HEAD 这个版本,源码1033行,比x264的源码要长很多。

复制完毕后,在命令行中执行make;执行完make之后再执行make install,成功后会发现源码文件夹里面多了一个libx264.a的包,用lipo查看,确实是armv7的架构,把它拷贝出来,重命名为libx264-armv7。

(7)编译armv7s的包。先执行下make clean,清除上一步执行得到的结果。编译armv7s的包与编译armv7的步骤完全一致,只不过配置需要略微修改,且不需要再拷贝gas-preprocessor.pl文件。配置命令如下:

 

CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang  

./configure --host=arm-apple-darwin --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk 

--prefix='build' --extra-cflags='-arch armv7s' --extra-ldflags='-arch armv7s -L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/usr/lib/system' 

--enable-pic --extra-asflags='-arch armv7s'

同样得到一个libx264.a的包,拷贝出来,重命名为libx264-armv7s。

(8)编译arm64的包,方法同上,配置命令如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值