ffmpeg4.1编译IOS版本及x264、fdk-aac

一、环境配置


  1. ffmpeg4.1下载
    直接从官网下载源码压缩包:http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2,没有从git下载是因为官方发布压缩包的应该是稳定版。
  2. 安装yasm
    直接brew install yasm即可。
  3. 编译脚本
    https://github.com/kewlbear/FFmpeg-iOS-build-script.git下载编译脚本。kewlbear上还有编译成framework的脚本,而且还有x264、fdk-aac的编译脚本。

二、编译设置


1. 编译
我选择的是编译成静态库,所以使用build-ffmpeg.sh
把编译脚本放到ffmpeg源码的上一级目录,编辑脚本把FF_VERSION改成你的ffmpeg版本,选择执行以下命令编译想要的平台版本,没带参数编译所有平台版本。

./build-ffmpeg.sh 
./build-ffmpeg.sh arm64  
./build-ffmpeg.sh armv7 x86_64

编译完成,在当前脚本目录下有个scratch目录存放了编译时的临时文件,thin目录下是每个不同平台的版本。
如果想合并多个平台版本,执行:

./build-ffmpeg.sh lipo

合并后的文件存放在FFmpeg-iOS/lib目录下,同时include头文件目录也会复制在下面。

2. ffmpeg config配置
脚本中有个变量CONFIGURE_FLAGS就是ffmpeg的configure配置,在这儿修改可以定制自己想要的功能。
比如我只想要简单的h264解码功能:

CONFIGURE_FLAGS="--enable-cross-compile --disable-debug --disable-programs \
                 --disable-doc --enable-pic --disable-encoders --disable-decoders \
                 --enable-decoder=h264 --disable-avdevice --disable-avfilter --disable-network \
                 --disable-demuxers --disable-muxers --disable-protocols --disable-parsers --disable-parser=h264"

这样编译出来的lib库只需要libavcodec.alibavutil.a即可使用h264解码。

编译x264


从[官网https://www.videolan.org/developers/x264.html]直接下载最新版源码。
https://github.com/kewlbear/x264-ios下载编译脚本build-x264.sh
把源码解压到x264目录,把编译脚本build-x264.sh放到x264同级目录,根据需要编译的archs修改脚本。
因为上面编译ffmpeg时已经安装过yasm,所以执行./build-x264.sh即可。

编译fdk-aac


从[官网http://www.linuxfromscratch.org/blfs/view/svn/multimedia/fdk-aac.html]直接下载最新版源码(当前2.0.0)。
https://github.com/kewlbear/fdk-aac-build-script-for-iOS下载编译脚本build-fdk-aac.sh
把源码解压,把编译脚本http://build-fdk-aac.sh放到解压出来的fdk-aac-2.0.0同级目录,根据需要编译的archs
及fdk-aac源码目录修改脚本。

因为上面编译ffmpeg时已经安装过yasm,所以执行./build-fdk-aac.sh即可。

ffmpeg+x264+fdk-aac


编译build-ffmpeg.sh,修改:

#X264=`pwd`/fat-x264`
X264=`pwd`/x264-iOS
#FDK_AAC=`pwd`/fdk-aac/fdk-aac-ios`
FDK_AAC=`pwd`/fdk-aac-ios

CONFIGURE_FLAGS="--enable-cross-compile --disable-debug --disable-programs \
                 --disable-doc --enable-pic --enable-nonfree"

fdk-aac需要添加--enable-nonfree选项。

执行./build-ffmpeg.sh

其他编译问题


有时在编译过后又修改了build-ffmpeg.sh脚本会导致编译结果很奇怪,这时把scratch目录删除重新编译。

使用


把编译好的FFmpeg-iOSx264-iOSfdk-aac-ios拖到xcode中,如果是swift工程,使用时要先创建桥接文件,在xcode直接随便新建一个c文件,会提示是否自动创建桥接文件,选择创建,然后就可以把这个临时c文件删除。
在桥接文件xxx-Bridging-Header.h中添加#include "libavformat/avformat.h"就可以使用ffmpeg。

猜你喜欢

转载自blog.csdn.net/weixin_34269583/article/details/87499689