最近在 pre 机器上过滤 ffmpeg 进程时,发现有 200 多个 ffmpeg 进程,
立即去线上看了下,发现线上机器没有该现象, 仔细看了下这些进程在做的事,完整命令如下:
/usr//bin/ffmpeg -fflags nobuffer -i rtmp://127.0.0.1:1938/biz-live-pre/23b526a7ae60ce1589278154368
-vframes 1 -an -f rawvideo -ss 0 -y -f image2 /www/live/biz-live-pre/23b526a7ae60ce1589278154368.jpg
是在 rtmp 直播流上截图并保存到指定目录下,
pre 环境用的是系统默认的 ffmpeg,版本为 2.6.8, 而线上是 3.1.2 ,这是唯一的区别,
因此尝试分别用 2.6.8 和 3.1.2 试了上述命令,发现 3.1.2 在 30 秒时会自动超时结束进程,
而 2.6.8 一直未超时, 这就解释了为什么 pre 环境有这么多进程没法结束了。
解决办法按简单的解决,就是把 pre 环境的 ffmpeg 配置到 3.1.2 即可。