FFmpeg编译OpenSSL支持接收HTTPS协议的HLS流

本文记载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时使用

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值