我想在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()
中传递命令(选项)的正确方法。任何帮助,将不胜感激。
答案 0 :(得分:1)
当你调用spawn
时,你传递命令,然后传递一个数组,其中每个标志和每个相关的参数是一个单独的元素。
因此,您需要'-acodec libopencore_amrnb'
而不是'-acodec', 'libopencore_amrnb'
,而不是if (parent.window != window) {
//inside iframe
}
。它们需要是两个独立的元素。