node.js exec和bash脚本

时间:2013-05-17 10:11:52

标签: node.js bash

我正在使用nodejs。我们的想法是使用exec启动一个bash脚本。我能做到。 在我的bash脚本中,我正在使用mencoder进行视频转换。例如:

mencoder Videoinput.ogv -o videouput.avi   -oac lavc -ovc lavc -lavcopts vbitrate=3000 vcodec=mpeg4

我遇到的问题:如果我尝试转换大型视频,则转换在特定时间之前就可以了。在我的情况下1分钟47秒.....所以看起来节点有一个时间最大值来执行使用exec的bash脚本然后它削减它。 我对吗?有谁知道如何为exec命令添加更多时间?如果可以,我将能够完成视频转换...感谢您的回答。

1 个答案:

答案 0 :(得分:1)

有意义的是,js不允许子进程运行超过特定时间。否则浏览器很容易变得无法响应。

我建议运行一个快速终止但在分离并行进程中启动mencoder的命令。将&附加到mencode命令就足够了,由此将其置于后台。也许您希望将其所有输出发送到特定文件中(或至少发送到/dev/null以完全禁止它)。请使用> outputfilename。可能重定向错误消息也是有意义的,因此在重定向标准输出以将两个流发送到同一文件后,也可以使用2> errormessagesfilename或仅使用2>&1

也许你必须创建一个子shell来欺骗js以相信子进程提前完成。这可以通过将命令放入括号((mencoder …))来完成。

所以你最终可能会这样:

(mencoder Videoinput.ogv \
    -o videouput.avi \
    -oac lavc \
    -ovc lavc \
    -lavcopts vbitrate=3000 vcodec=mpeg4 \
    >/tmp/mencoder.output 2>&1 &) > /dev/null
相关问题