这里讨论的是使用源码方式编译按照,而不是使用brew安装(后期不可裁剪)。
编译依赖准备
- gas-preprocessor。Perl 脚本,将 GNU 的一个子集实现为 Apple 没有的预处理
- yams
- pkg-config
基本编译命令
1 2 3 4 5 6
| ./configure --prefix=/opt/ffmpeg --enable-debug=3 --disable-static --enable-shared --enable-libfdk_aac --enable-nonfree --enable-libopus --enable-libvpx --enable-libx264 --enable-gpl --enable-libx265
make -j 4
sudo make install
|
编译配置:
1 2 3 4 5 6
| --prefix=/opt/ffmpeg
--enable-debug=3
--disable-static --enable-shared
|
prefix参数目前设在一个共享目录,生成的动态库是共享用的,即不是随app的。另一方面,这个参数也是直接设置了dyld的install name,直接拷贝包会导致运行时找不到包。
似乎编解码都没有启用,所以都要一一启用。
要启用的编解码器不在FFmpeg代码中,因此启用编码器时,也不会下载,需要额外用brew安装。
使用这种方式安装意味着app要想到其他机器运行,也需要配置一样的环境。
iOS平台编译
1 2 3 4 5 6 7 8 9 10
| ./ffmpeg-4.3.2/configure \ --target-os=darwin \ --arch=arm64 \ --cc="xcrun -sdk iphoneos clang" \ --as="gas-preprocessor.pl -arch aarch64 -- xcrun -sdk iphoneos clang" \ --enable-cross-compile --disable-debug --disable-programs \ --disable-doc --enable-pic \ --extra-cflags="-arch arm64 -mios-version-min=8.0 -fembed-bitcode" \ --extra-ldflags="-arch arm64 -mios-version-min=8.0 -fembed-bitcode" \ --prefix=/Users/bq/Workspace/Git/FFmpeg/BuildScript/kewlbear/FFmpeg-iOS-build-script/thin/arm64
|
编译后的目录
- bin|所有命令工具
- include|头文件
- lib|生成的动态库、静态库
- share|文档、例子
pkg-config
查找系统库路径:pkg-config --libs libavformat
如果没找到,首先确认编译后的lib目录下是否有pkgconfig目录,然后添加全局变量:
1
| export PKG_CONFIG_PATH=/opt/ffmpeg/lib/pkgconfig/:$PKG_CONFIG_PATH
|