追踪解决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