本文记载FFmpeg编译OpenSSL库时所遇到的一些问题,以及浅析FFmpeg编译选项的一些含义。

引言:做项目时遇到使用FFmpeg解析HTTPS协议的HLS流报错,后台返回值为 -1330794744,错误信息为:Protocol not found。经过分析需要重新编译FFmpeg以支持HTTPS协议,在编译过程中又遇到:OpenSSL not found,以及编译成功后依旧无法识别HTTPS协议。

首先附上最原始的编译配置选项:
--prefix=/sb/ffmpeg/ --x86asmexe=/sb/yasm/bin/yasm --target-os=linux --enable-cross-compile --cross-prefix=x86_64-unknown-linux-gnu- --arch=x86_64 --enable-demuxers --enable-bsf=h264_mp4toannexb --enable-bsf=hevc_mp4toannexb --enable-protocol=crypto --enable-static --enable-shared --disable-symver --disable-all --disable-autodetect --enable-gpl --enable-version3 --enable-nonfree --disable-programs --disable-doc --enable-avcodec --disable-avdevice --enable-avfilter --enable-avformat --enable-swresample --enable-swscale --disable-avresample --disable-w32threads --disable-os2threads --enable-network --disable-everything ...(组件的disable,全都省略了)

为了使FFmpeg可以支持HTTPS协议,在已编译了OpenSSL的基础上,需要加的配置选项为:
--enable-openssl --enable-protocols --enable-protocol=https
但是在编译的过程中报错:openssl not found
这是因为编译过程中找不到已编译的OpenSSL库的路径,需要在配置选项中指定具体的路径:
--extra-cflags="-I/sb/openssl/include/" --extra-ldflags="-L/sb/openssl/lib/"
这样就可以成功将OpenSSL编译到FFmpeg中去了。

但是使用新的FFmpeg依然无法识别HTTPS协议,经过多次试验,在将--disable-everything这个选项去掉之后,就可以成功的识别HTTPS协议了。这是因为这个选项会将它之后的所有选项都禁用,这会导致OpenSSL即使编译成功也无法使用(编译选项的Individual componen列表中,HTTPS协议的允许在这个选项的下面)。

PS:附上FFmpeg编译选项的分段含义:FFmpeg的configure选项共有十三类:
Help options:帮助选项
Standard options:标准选项,定义编译之后的各路径
Licensing options:发布选项,定义编译出来的FFmpeg是否可用于商用,以及是否允许GPL
Configuration options:配置选项
Program options:编译什么可执行程序
Documentation options:是否编译文档
Component options:需要编译FFmpeg的什么内部组件
Individual component options:编解码、协议选项
External library support:外部库
Toolchain options:工具选项
Advanced options / Optimization options / Developer options : 三个高级选项,调试FFmpeg时使用

GitHub 加速计划 / ope / openssl
25.13 K
9.99 K
下载
传输层安全性/安全套接层及其加密库
最近提交(Master分支:1 个月前 )
fd39d1c8 Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Shane Lontis <shane.lontis@oracle.com> (Merged from https://github.com/openssl/openssl/pull/25095) 2 个月前
ae87c488 Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Shane Lontis <shane.lontis@oracle.com> (Merged from https://github.com/openssl/openssl/pull/25095) 2 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐