节点ffmpeg child_process停止但仍然活着

时间:2014-03-27 16:35:15

标签: node.js ffmpeg child-process

我有一个Node app,它通过child_process启动ffmpeg的多个实例,每个ffmpeg都会对来自摄像头的实时流进行转码。

问题是,在5到10分钟之后,ffmpeg进程才停止进行转码,因为我可以在任务管理器上看到它,所以该进程仍处于活动状态,但它只是停止进行转码。

现在,如果我将ffmpeg的输出发送到Node.js控制台日志,那实际上可以使转码保持活动状态。

任何想法可能导致这种情况?

1 个答案:

答案 0 :(得分:0)

似乎stdout或stderr缓冲区正在填满,代码会被阻塞,直到它们被读取为止。 解决方案是将它们重定向到父级,将它们写入文件,将它们传送到其他位置,或者忽略它们(将它们传递给/dev/null)。

如果你不需要输出,那么简单的方法就是产生:

spawn('prg', [], { stdio: 'ignore' });

spawn documentation中记录了这一点。