我正在尝试在node.js中生成一个avconv进程。
它应该在stdin
上接收数据并将转换后的数据输出到stdout
虽然命令在shell中有效,但它会立即在node.js中关闭,我不知道原因:
avconv -v quiet -i pipe:0 -vn -f s16le -acodec pcm_s16le pipe:1
这只是有效,并且在节点中:
var a = spawn('avconv', ['-v quiet -i pipe:0 -vn -f s16le -acodec pcm_s16le pipe:1']);
a.on('exit', function(code) {
pr(code, true);
})
我立即获得'1'退出代码。 谁能告诉我这里出了什么问题?
答案 0 :(得分:3)
您需要自己分离参数数组:
var a = spawn('avconv', ['-v', 'quiet', '-i', 'pipe:0', '-vn', '-f', 's16le', '-acodec', 'pcm_s16le', 'pipe:1']);
您从命令行工作中习惯的空间分隔由shell提供(bash,zsh ...)。 shell使用空格将你的命令分解为参数,让你说"我想把它作为一个参数"加上引号。