我想在我的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'。它们需要是两个单独的元素。

10-07 19:15
查看更多