我想在我的nodejs应用程序中使用ffmpeg命令。我不想使用任何类似fluent-ffmpeg的npm软件包。
到目前为止,我已经做到了:
var ffmpeg = spawn('ffmpeg', ['-i',fileName+'.wav' ,fileName+'.amr','-acodec libopencore_amrnb', '-ab 12200k', '-ac 1', '-ar 8000']);
// input_file.pipe(ffmpeg.stdin);
// ffmpeg.stdout.pipe(output_stream);
ffmpeg.stderr.on('data', function (data) {
console.log(data.toString());
});
ffmpeg.stderr.on('end', function () {
console.log('file has been converted succesfully');
});
ffmpeg.stderr.on('exit', function () {
console.log('child process exited');
});
ffmpeg.stderr.on('close', function() {
console.log('...closing time! bye');
});
在输出中,它给出这样的错误:
Unrecognized option 'acodec libopencore_amrnb'
我已经安装了所有需要的二进制文件。只需要知道我必须在
spawn()
中传递什么命令即可:var ffmpeg = spawn('ffmpeg', ['-i',fileName+'.wav' ,fileName+'.amr','-acodec libopencore_amrnb', '-ab 12200k', '-ac 1', '-ar 8000']);
我已经在终端上尝试了该命令,并且运行良好。我想要的是在
spawn()
中传递命令(选项)的正确方法。任何帮助,将不胜感激。 最佳答案
调用spawn
时,先传递命令,然后传递一个数组,其中每个标志和每个关联的参数都是一个单独的元素。
因此,您需要的是'-acodec libopencore_amrnb'
,而不是像您一样的'-acodec', 'libopencore_amrnb'
。它们需要是两个单独的元素。