Javascript 使用Nodejs捕获系统音频输出

Javascript 使用Nodejs捕获系统音频输出,javascript,node.js,audio,audio-streaming,Javascript,Node.js,Audio,Audio Streaming,在javascript中是否有一种方法,或者是否有一个nodejs模块,可以用来捕获系统的输出(win/osx)。例如,如果用户正在通过iTunes/MPlayer(任何音乐播放器)播放某些内容,我可以捕获发送到扬声器的音频流(输出)并通过web发送?这可能有助于实现您的愿望:我即将开始一个类似项目的开发工作,但在安装node core audio时遇到问题,因此我必须找到另一个模块。看起来是一个很好的替代品,它安装得很好。在我有时间玩之后,我会更新我的发现 更新: 在我的项目中,我想对系统音频

在javascript中是否有一种方法,或者是否有一个nodejs模块,可以用来捕获系统的输出(win/osx)。例如,如果用户正在通过iTunes/MPlayer(任何音乐播放器)播放某些内容,我可以捕获发送到扬声器的音频流(输出)并通过web发送?

这可能有助于实现您的愿望:

我即将开始一个类似项目的开发工作,但在安装node core audio时遇到问题,因此我必须找到另一个模块。看起来是一个很好的替代品,它安装得很好。在我有时间玩之后,我会更新我的发现

更新:

在我的项目中,我想对系统音频输出进行频谱分析。我最终使用Soundflower和SoundflowerBed设置音频路由。一旦我开始工作,我就能够使用naudiodon来记录原始音频数据

这在Node 8.17.0中进行了测试,我的Node fork of naudiodon将控制台日志记录在缓冲区溢出上,因为它扰乱了我的终端UI。 如果你愿意的话,我的叉子在这里可以买到,但我不认为我做了什么具体的工作

github:psnyder/naudiodon#功能/缓冲区溢出时不要写入控制台

我建议您在安装所需的软件包后,在节点控制台中逐行运行此程序

const fs = require('fs');
const portAudio = require('naudiodon');

// Use this to find out the device id for soundflower
console.log(portAudio.getDevices());

// create audio io instance
const ai = new portAudio.AudioIO({
  inOptions: {
    channelCount: 2,
    sampleFormat: portAudio.SampleFormat16Bit,
    sampleRate: 44100,
    deviceId: 2, // choose id for Soundflower (2CH)
    closeOnError: true,
  }
});
const ws = fs.createWriteStream('rawAudio.raw');
ai.pipe(ws);
ai.start();
// Wait a while as you record the audio in -- check your sound levels in SoundflowerBed, etc.
// When you are done...
ai.quit();

现在在Audacity中,您可以通过文件->导入->原始数据并检查音频波形。

没有跨平台的方法。Windows和OSX之间的API是不同的。在Windows上,您只能在Windows Vista或更高版本上捕获此音频。即便如此,我发现在Windows中使用环回音频驱动程序是最容易的,这样您就可以使用标准的音频捕获方法。我不确定OSX上的API,但我知道它在那里是直接可能的。你有过这样的运气吗?我想达到同样的目标。查看OSX的这个模块:@JoeSloth不幸的是,没有,除非您在操作系统上运行本机应用程序,否则您无法连接到系统范围的输出。不过,该节点模块看起来值得您关注。如果你有什么具体的发现,一定要告诉我。我有点想出了一个解决办法。我有osx音频从我的mac电脑上的输入中提取音频。我不得不下载另一个名为SoundFlower的应用程序,它可以将我的电脑输出的音频路由到输入端。我可以通过互联网传输我的Mac电脑的音频。甚至把我的唱机连接到我的mac电脑上,并能以流媒体的方式播放well@JoeSloth是的,这就是我对本机应用程序的意思。soundflower方法很有效,但遗憾的是,在我的用例中,这不是一个选项。不过,我很高兴它对你有用。你有没有让系统音频正常工作过?@BenRacicot刚刚用我的经验更新了我的答案。希望对你有帮助!