【问题标题】:Node ffmpeg child_process stops but still alive节点 ffmpeg child_process 停止但仍然存在
【发布时间】:2014-05-06 18:57:30
【问题描述】:

我有一个 Node 应用程序,它通过 child_process 启动多个 ffmpeg 实例,每个 ffmpeg 对来自摄像机的实时流进行转码。

问题是 ffmpeg 进程在 5~10 分钟后停止转码,该进程仍然存在,因为我可以在任务管理器上看到它,但它只是停止转码。

现在,如果我将 ffmpeg 的输出发送到 Node.js 控制台日志,这实际上会保持转码有效。

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

【问题讨论】:

    标签: node.js ffmpeg child-process


    【解决方案1】:

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

    如果您不需要输出,最简单的方法是生成:

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

    这在spawn documentation 中有记录。

    【讨论】:

    • 请注意,如果您确实需要stdout,但不要使用stderr,它仍然会中断!您需要将stderr 显式映射到ignore
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    相关资源
    最近更新 更多