nodejs

时间:2017-03-02 06:20:37

标签: node.js ffmpeg

我想在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()中传递命令(选项)的正确方法。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:1)

当你调用spawn时,你传递命令,然后传递一个数组,其中每个标志和每个相关的参数是一个单独的元素。

因此,您需要'-acodec libopencore_amrnb'而不是'-acodec', 'libopencore_amrnb',而不是if (parent.window != window) { //inside iframe } 。它们需要是两个独立的元素。