2

我正在尝试在 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”退出代码。谁能告诉我这里出了什么问题?

4

1 回答 1

3

您需要自己分离参数数组:

var a = spawn('avconv', ['-v', 'quiet', '-i', 'pipe:0', '-vn', '-f', 's16le', '-acodec', 'pcm_s16le', 'pipe:1']);

您习惯于从命令行工作的空格分隔是由您的 shell(bash、zsh...)提供的。shell 使用空格将您的命令分解为参数,并通过添加引号让您说“我想要这个作为单个参数”。

于 2014-05-08T12:23:37.423 回答