我有一个Node app,它通过child_process启动ffmpeg的多个实例,每个ffmpeg都会对来自摄像头的实时流进行转码。
问题是,在5到10分钟之后,ffmpeg进程才停止进行转码,因为我可以在任务管理器上看到它,所以该进程仍处于活动状态,但它只是停止进行转码。
现在,如果我将ffmpeg的输出发送到Node.js控制台日志,那实际上可以使转码保持活动状态。
任何想法可能导致这种情况?
答案 0 :(得分:0)
似乎stdout或stderr缓冲区正在填满,代码会被阻塞,直到它们被读取为止。
解决方案是将它们重定向到父级,将它们写入文件,将它们传送到其他位置,或者忽略它们(将它们传递给/dev/null
)。
如果你不需要输出,那么简单的方法就是产生:
spawn('prg', [], { stdio: 'ignore' });
spawn documentation中记录了这一点。