1、下载FFmpeg
官网:ffmpeg.org
2、编译脚本
我们使用一位韩国大牛写的脚本,github:FFmpeg-iOS-build-script
这个脚本提供了高度自动化的编译方式,能自动安装编译环境,并可选择编译的版本。
3、脚本修改
在开始编译之前我们需要根据实际情况对build-ffmpeg.sh脚本进行一些修改
SOURCE=“ffmpeg-2.0.2” 修改为你需要编译的ffmpeg目录名称,本文以2.0.2为例
DEPLOYMENT_TARGET=“9.0” 修改为Xcode所对应的SDK版本
ARCHS="arm64 armv7 x86_64 i386” 修改为你需要编译的架构
我们知道ffmpeg是一个很庞大的库,包括编码、解码和流媒体的支持等等,如果全部编译,生产的静态库就很大。实际使用中我们可能只需要其中一部分功能,这时就可以进行裁剪,只启用我们需要的部分,减少静态库的体积,因此我们在config中添加以下命令:
去掉一些可执行文件
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-iconv \
--disable-bzlib \
--enable-avresample \
--disable-armv6 \
--enable-avresample \
--enable-pic \
--disable-doc \
--disable-armv5te \
先把全部解码禁用,再打开我们需要的解码器
--disable-decoders \
--enable-decoder=h264 \
--enable-decoder=aac \
先把全部编码禁用,再打开我们需要的编码器
--disable-encoders \
--disable-demuxers \
--enable-demuxer=mp4 \
--disable-muxers \
--enable-muxer=mp4 \
如果需要支持更多的编码和解码格式,大家可以根据实际情况添加。
通过这些修改,我们可以大幅减少编译生成的静态库的体积,经测试,用此配置编译的静态库体积可由95M减少到35M,你的app再也不用担心变成大胖子了。
4、编译
把脚本和ffmpeg放到同一个文件夹下,如FFMPEG_iOS
打开终端,cd到FFMPEG_iOS
执行脚本
./build-ffmpeg.sh
编译完成后,编译合并的版本
./build-ffmpeg.sh lipo
5、完成
在FFmpeg-iOS文件夹中的文件就是我们最终生成的静态库
include 头文件
lib .a文件
6、导入到工程中
将编译的文件夹导入到工程中,添加依赖库
libz.dylib
libbz2.dylib
libiconv.dylib
command+B,编译通过,成功!!
7、添加x264支持
1、从x264下载x264
2、编辑脚本build-x264.sh需要编译的架构
3、使用脚本编译得到x264静态库
4、将x264-iOS文件夹改名为fat-x264,放到跟ffmpeg脚本同一个目录下
5、修改ffmpeg脚本,将X264=`pwd`/fat-x264
注释取消,删除CFLAGS="$CFLAGS -mios-version-min=$DEPLOYMENT_TARGET -fembed-bitcode
中的-fembed-bitcode
6、重新编译ffmpeg即可
8、脚本下载
本文示例demo可到我的github下载:FFmpeg-build
Next:
FFmpeg音视频-第一个小目标:尝试H264解码