Node.js アプリケーションから FFMPEG を実行できる必要があります。この問題は、FFMPEG に固有のものではなく、コマンド ライン引数を適切に指定することに関係している可能性が高いと思いますが、問題を絞り込むことができなかったので、問題全体を提示します。
コマンドプロンプトから次のコマンドを正常に実行できます。
C:\Brad\ffmpeg.exe -f dshow -i audio="Microphone (SoundMAX Integrated" testaaa.mp3
FFMPEG は期待どおりに起動し、オーディオ デバイスからオーディオを録音し、MP3 ファイルを書き込みます。ここで、Node.js アプリケーション内で同じことを試みます。
childProcess = child_process.spawn('C:\\Brad\\ffmpeg.exe', ['-f', 'dshow', '-i', 'audio="Microphone (SoundMAX Integrated"', 'testaaa.mp3']);
childProcess.stderr.on('data', function (data) {
console.log('StdioSource received data from STDERR: ' + data);
});
Node.js 内から、FFMPEG が失敗します。 エラーは単純です:
[dshow @ 0000000001eded80] Could not find audio device.
audio="Microphone (SoundMAX Integrated": Input/output error
-list_devices true
何らかの理由でこれは奇妙なパーミッション エラーであると考えて、Node アプリケーション内からFFMPEG を実行することにしました。確かに、問題のデバイスがリストされています。
[dshow @ 000000000228ecc0] DirectShow video devices
[dshow @ 000000000228ecc0] Could not enumerate video devices.
[dshow @ 000000000228ecc0] DirectShow audio devices
[dshow @ 000000000228ecc0] "Microphone (SoundMAX Integrated"
FFMPEG の引数でオーディオ入力デバイスを正しく指定できない理由、または Node.js の子プロセスとして実行しているときに FFMPEG がオーディオ入力デバイスを認識しない理由について何か考えはありますか?
どんなヒントでも大歓迎です。