我需要能够从我的 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 的参数中正确指定音频输入设备,或者为什么 FFMPEG 在作为 Node.js 的子进程运行时无法识别我的音频输入设备的任何想法?
任何提示将不胜感激。