2017-03-02 177 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

它工作。謝謝。 –