Linux上ffmpeg 处理m3u8视频时,Error: Command was killed with SIGSEGV (Segmentation faul

141 阅读1分钟

问题

使用@ffmpeg-installer/ffmpeg下载的ffmpeg处理m3u8视频时,随机会出现异常,异常信息如下:

Error: Command was killed with SIGSEGV (Segmentation fault)

一个m3u8视频有将近1000个ts文件,有时候处理到第200个时异常,有时候处理到第800个时异常。

现象:

  1. 随机出现

  2. windows和mac上正常

  3. linux上异常

原因

ffmpeg 官网上 johnvansickle.com/ffmpeg/rele… 有注意事项

Notes:  A limitation of statically linking glibc is the loss of DNS resolution. Installing
				nscd through your package manager will fix this.

				The vmaf filter needs external files to work- see model/000-README.TXT

静态链接glibc的一个限制是丢失DNS解析。通过包管理器安装nscd可以解决这个问题。

默认Linux服务器是不会对DNS解析记录进行缓存的。

nscd 可以本地缓存DNS解析信息,提供解析速度。

解决方法

stackoverflow.com/questions/6…

方案一:

安装nscd并启动

centos下安装方法

yum -y install nscd #安装nscd
systemctl status nscd #查看nscd状态
systemctl start nscd #启动nsc

其它替代方案

  1. 手动编译ffmpeg, 在./configure中启用 gnutls, openssl,libtls 或者 mbedtls 以支持https
  2. 使用IP
  3. 将视频下载之后再使用ffmpeg处理。可以使用wgetm3u8中的所有.ts文件下载