2017-03-02 299 views
0

我想在我的nodejs应用程序中使用ffmpeg命令。我不想使用像fluent-ffmpeg这样的任何npm软件包。 到现在我已经做到了这一点:nodejs中的Ffmpeg命令

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

当您拨打spawn时,您传递命令,然后传递一个数组,其中每个标记和每个关联的参数是一个单独的元素。

因此,而不是'-acodec libopencore_amrnb',像你一样,你想要'-acodec', 'libopencore_amrnb'。他们需要是两个单独的元素。

+0

现在明白了这个无法识别的选项'acodec' –

+0

您是否保留'-'前缀?试试这个,这是有效的:'spawn('ffmpeg',['-i',fileName +'.wav','-acodec','libopencore_amrnb','-ac','1','-ar',' 8k','output.amr'])' –

+0

它工作。谢谢。 –