最近在 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 即可。