编译带 OpenSSL 的 FFmpeg(4.1.1) iOS
0. 本文部分参考自 https://blog.csdn.net/github_35041937/article/details/80727772 及 https://www.jianshu.com/p/f98db1d84d93 。
1. 首先把 https://github.com/kewlbear/FFmpeg-iOS-build-script clone到本地。
2. 修改 build-ffmpeg.sh 中 FF_VERSION="4.1.1"。
3. 添加 OPENSSL=`pwd`/openssl ,此时需要在工程目录中新建名为 openssl 的文件夹,把编译好的 openssl 的 include 和 lib 文件夹放入其中。具体编译方法见 https://www.jianshu.com/p/6066075d3aef 。
3. 添加对 https 和 openssl 的支持,在 CONFIGURE_FLAGS 后追加 --enable-protocol=https --enable-openssl --enable-protocol=crypto --enable-protocol=tls_openssl ,如果在第二步中已经定义 OPENSSL 的话,可以写成如图形式:
4. 精简体积:如果不需要许多复杂的功能,可以在 CONFIGURE_FLAGS 中如下代码:
CONFIGURE_FLAGS="$CONFIGURE_FLAGS --disable-decoders --enable-decoder=h264 --enable-decoder=aac"
CONFIGURE_FLAGS="$CONFIGURE_FLAGS --disable-encoders --enable-encoder=aac --enable-encoder=mjpeg"
CONFIGURE_FLAGS="$CONFIGURE_FLAGS --disable-filters"
CONFIGURE_FLAGS="$CONFIGURE_FLAGS --disable-muxers"
具体其他的 flag 还待研究,可以参考 ijkplayer 中的 module-lite.sh 自主选择。
5. 添加对 openssl 的引用路径,如图:
6. 注:如果想修改最低 iOS 版本的支持,修改 DEPLOYMENT_TARGET="8.0" 即可。
7. 保存后 cd 到该文件夹,执行 ./build-ffmpeg.sh (不要直接拖文件进来执行,不然导出的时候因为路径不对会报错)。如果终端显示 Done ,说明编译成功。
8. 编译成功后在 FFmpeg-iOS 文件夹下可得 include 和 lib 。
9. 注: 该文章里使用的 OpenSSL 版本是 1.0.2r,使用 1.1.0 及以上版本编译时会报错 "ERROR: openssl not found",需要修改 FFmpeg 配置文件,具体解决方法见第二个参考文。