使用Nodejs捕获系统音频输出

Raz*_*ill 6 javascript audio audio-streaming node.js

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

PRS*_*PRS 5

我即将开始一个类似项目的开发工作,但在安装 node-core-audio 时遇到问题,所以我不得不找到一个不同的模块。https://www.npmjs.com/package/naudiodon看起来是一个不错的替代品,并且安装得很好。在我有时间玩弄它之后,将更新我的发现。

更新:

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

这是在 Node 8.17.0 中测试的,我的 naudiodon 分支删除了缓冲区溢出时的控制台日志记录,因为它弄乱了我的终端用户界面。如果你愿意,我的叉子可以在这里找到,但我认为我没有为此做任何具体的工作。

github:psnyder/naudiodon#feature/dont-write-to-console-on-buffer-overflow

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

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();
Run Code Online (Sandbox Code Playgroud)

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


pet*_*est 2

这可能会以某种方式做你想做的事:https ://www.npmjs.com/package/node-core-audio