0

我正在使用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 命令添加更多时间?如果可能的话,我将能够完成视频转换......感谢您的回答。

4

1 回答 1

1

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

我建议运行一个快速终止但已mencoder在分离的并行进程中启动的命令。&将 a 附加到命令中就足够了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
于 2013-05-17T10:32:25.333 回答