追踪解决FFmpeg无法操作https资源的问题

定位问题

使用 php-ffmpeg 组件截取https的网络视频时发现,抛出异常 unable to probe https://xxx.mp4

在命令行直接执行 ffprobe 命令 ffprobe https://xxx.mp4
结果报错如下:

https protocol not found, recompile FFmpeg with openssl, gnutls or securetransport enabled.
https://xxx.mp4: Protocol not found

G了一番发现是 ffmpeg 编译时未启用 openssl 的问题。

解决

对于这个问题,需要卸载重新编译安装。配置时需要附带 --enable openssl。如果使用 ubuntu 系统,需要在编译安装前执行 sudo apt-get install libssl-dev ,确保 libssl-dev 存在

./configure --prefix=/usr/local/ffmpeg --enable-openssl
make && make install

若 ./configure 时 报错

nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.

需再附加--disable-x86asm编译安装,即

./configure --prefix=/usr/local/ffmpeg --enable-openssl --disable-x86asm

将ffmpeg相关命令设置为全局命令

vi /etc/profile

在最后PATH添加环境变量,保存退出

PATH\=$PATH:/usr/local/ffmpeg/bin
export PATH
source /etc/profile   设置生效
ffmpeg -version       查看版本

最后,执行一下ffprobe https://xxx.mp4发现无报错,能正常执行。

补充:
参考文章
https://stackoverflow.com/questions/31514949/ffmpeg-over-https-fails
https://www.cnblogs.com/rxbook/p/9652185.html