最新的ffmpeg已经是2.8.3版本了.加上所在的项目需要使用H264.所以有如题所示的需求.
环境:
系统: MAC OS X EI Captitan (10.11.1)
Xcode: 7.1
X264的编译
还是参考http://blog.sina.com.cn/s/blog_47522f7f0102vcbj.html的方式.
(1)首先到http://www.videolan.org/developers/x264.html
(2)到https://github.com/kewlbear/x264-ios
(3)运行脚本./build-x264.sh;
注意:该脚本需要分别运行
./build-x264.sh arm64
./build-x264.sh x86_64
./build-x264.sh i386
./build-x264.sh armv7 .才能得到支持arm64,x86_64,i386,armv7 的四个版本(网上说的不能一次得到四个版本的原因).然后使用lipo -create合并成一个X264.a文件和include文件夹.
ffmpeg 2.8.3+X264的编译
准备条件:
先下载文件:https://github.com/libav/gas-preprocessor,复制gas-preprocessor.pl到/usr/local/bin下.
注意在OS X 10.11.1下由于权限问题,一直不能把gas-preprocessor.pl到/usr/local/bin下.
这里有两种方式:
1.在终端下输入: sudo chmod -R 777 /usr/local/bin 修改bin目录的权限.修改成功后,就可以拷贝到目录下了.
2.通过安装brew install来修改/bin的权限(我是使用这个方式的).
具体安装 brew install 看下我另一博客(http://blog.csdn.net/nogodoss/article/details/45096025).
ffmpeg2.8.3的编译
FFmpeg-IOS-build-script下载地址:https://github.com/kewlbear/FFmpeg-iOS-build-script.
这个脚本支持到2.8.3版本.但是这个版本不支持下载和解压缩ffmpeg的功能.为了支持自动化,我加入以下的代码:
VERSION="2.8.3"
//下载ffmpeg 2.8.3版本
echo "download ffmpeg"
set -e
if [ ! -e ffmpeg-${VERSION}.tar.bz2 ]; then
echo "Downloading ffmpeg-${VERSION}.tar.bz2"
curl -O http://ffmpeg.org/releases/ffmpeg-${VERSION}.tar.bz2
else
echo "Using ffmpeg-${VERSION}.tar.bz2"
fi
exit
#//解压缩下载的文件夹
tar jxvf ffmpeg-${VERSION}.tar.bz2
加入X264库
build-ffmpeg.sh脚本已经包含有x264的编译选项.但是我稍作了改变
(要把前面编译X264生成的include和lib放到ffmpeg2.8.3文件夹下)
#CONFIGURE_FLAGS="--enable-cross-compile --disable-debug --disable-programs \
# --disable-doc --enable-pic"
#if [ "$X264" ]
#then
# CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-gpl --enable-libx264"
#
# echo CONFIGURE_FLAGS
#fi
//修改成一句了
CONFIGURE_FLAGS="--enable-cross-compile --disable-debug --disable-programs \
--disable-doc --enable-pic --enable-gpl --enable-libx264"
然后执行buil-ffmpeg.sh.在FFmpeg-iOS文件夹下生成了include文件夹和lib文件夹, 通过lipo -info. 得到我想要的ffmpeg版本.
ffmpeg2.8.3+X264的调用
加入ffmpeg下include和lib文件到xcode下并在xcode工程中设置正确的header和lib路径.加入X264所需要的include文件x264_config.h和x264.h 和X264.a文件.记得设置header和lib路径.
这样就可以编译成功了.