是否有可能从Node js的windows CLI实用程序获得数据流?



我想创建一个节点应用程序,记录和解析我的Windows 10系统输出设备的音频。这看起来是一个真正的挑战,因为我检查了许多npm包,但没有找到任何允许从输出设备录制音频的包。所以我找到了一个适用于Windows 10的第三方命令行工具我不确定我是否应该给出它的名字,因为它可能会像营销等一样受到威胁。

所以这个CLI实用程序允许为输出设备记录环回音频并将其保存到WAV文件中。
我想知道是否存在某种方法来拦截来自这个实用程序到WAV文件从我的NODE.js应用程序来处理它的数据流?或者如果CLI实用程序不提供一些API来获取这些数据,这是不可能的?

我也在考虑立即打开WAV文件,并在录音期间读取此文件,以获取NODE .js应用程序中的最新数据并处理它,但我不确定由于同一文件的写/读流(从CLI -写,并从NODE -读)

感谢任何帮助或信息!

注:如果我的问题很愚蠢,我很抱歉。我不熟悉这么低级的东西

经过一个晚上的研究,我设法得到了我的特殊情况的数据。
我使用了节点子进程包中的spawn来创建一个专用进程,在这个进程中,我使用适当的参数执行CLI实用程序,这些参数将记录数据直接发送到STDOUT。请记住exec不起作用在这个特定的任务中,由于缓冲区问题

这里最重要的是:幸运的是,CLI实用程序有可能将记录数据块发送到STDOUT而不是文件。然而,我不知道如果它不能,我该怎么办。我不知道是否有一种现有的方法来拦截直接写入输出文件的数据,所以这个答案不是100%适合这个问题。如果CLI不将数据写入STDOUT,该怎么办?如果有人知道这件事,请告诉我,我会非常感激的。

下面是基本代码示例:
import { spawn } from 'node:child_process';
const child = spawn('fmedia', ['--record', '--dev-loopback=0', '-o', '@stdout.wav']);
child.stdout.on('data', data => {
console.log('stdout data -> ', data);
})
child.stderr.on('data', data => {
console.log('stderr data -> ', data);
})
child.on('close', code => {
console.log('child process exited with code ' + code);
});

亲切的问候

相关内容

最新更新