我在节点程序中运行此过程
recorder = spawn("avconv", ["-y", "-r", "30", "-g", "300",
"-f", "x11grab",
"-s", "1024x768",
"-i", process.env.DISPLAY,
"-vcodec", "qtrle", "my_videos/the_video.mov"]);
此代码使用avconv
程序录制视频。问题是,在完成记录视频后,我需要运行另一个使用输出文件进行第一个过程的进程
spawn("avconv", ["-y",
"-i","my_videos/the_video.mov",
"-filter:v", "'setpts=5.0*PTS'",
"my_videos/slowed_video.mov"]);
是否有为第二个流程的第一个流程创建管道?
答案 0 :(得分:0)
基于close
API文档。
请参阅: https://nodejs.org/api/child_process.html#child_process_class_childprocess
您应该能够使用on
api来监听流程var AVCONV_OK = 0; // assuming 0 indicates SUCCESS, which what most executable reports.
recorder = spawn("avconv", ["-y", "-r", "30", "-g", "300",
"-f", "x11grab",
"-s", "1024x768",
"-i", process.env.DISPLAY,
"-vcodec", "qtrle", "my_videos/the_video.mov"]);
recorder.on('close', (returnCode) => {
if (returnCode === AVCONV_OK) {
// Spawn the 2nd process to do step 2.
}
else {
console.log("oops recording failed.");
}
});
事件。
示例:
avconv
注意:以上代码仅为纯伪,我无法对其进行测试,因为我没有使用spawnSync
。
或者你可以像评论中的其他建议那样做。使用status
返回包含output
和avconv
等参数的对象。
无论哪种方式都很好,执行异步的唯一好处是,当您等待spawnSync
完成运行时,您的nodeJS应用仍然可以处理其他内容。
对于data.map(lambda x:len(x)).collect()
>>> [13, 12]
,请参阅:
https://nodejs.org/api/child_process.html#child_process_child_process_spawnsync_command_args_options