【问题标题】:Capture system audio output with Nodejs [closed]使用 Nodejs 捕获系统音频输出 [关闭]
【发布时间】:2014-09-21 21:41:21
【问题描述】:

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

【问题讨论】:

  • 没有跨平台的方法。 Windows 和 OSX 之间的 API 是不同的。在 Windows 上,您只能在 Windows Vista 或更高版本上捕获此音频。即便如此,我发现在 Windows 中使用环回音频驱动程序是最简单的,这样您就可以使用标准的音频捕获方法。我不确定 OSX 上的 API,但我知道那里可以直接使用。
  • 有什么运气吗?我想实现同样的目标。查看 OSX 的这个模块:npmjs.com/package/osx-audio
  • @JoeSloth 不幸的是,没有,似乎除非您在操作系统上运行本机应用程序,否则您无法连接到系统范围的输出。该节点模块看起来值得关注。如果您发现任何具体的东西,请告诉我。
  • 我想出了一个解决方案。我有那个 osx-audio 从我的 mac 上的输入中提取音频。我必须下载另一个名为 SoundFlower 的应用程序,它可以将我的计算机输出音频路由到其输入。我能够通过互联网流式传输我的 Mac 的音频。甚至将我的电唱机连接到我的 Mac 上,也可以进行流式传输
  • @JoeSloth 是的,这就是我对本机应用程序的意思。 soundflower 方法有效,但遗憾的是在我的用例中这不是一个选项。不过,我很高兴它对你有用。

标签: javascript node.js audio audio-streaming


【解决方案1】:

这可能会在某种程度上做你想做的事:https://www.npmjs.com/package/node-core-audio

【讨论】:

    【解决方案2】:

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

    更新:

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

    这是在节点 8.17.0 中测试的,我的 naudiodon 分支删除了缓冲区溢出的控制台日志记录,因为它与我的终端 UI 混淆了。 如果您愿意,我的 fork 可以在此处获得,但我认为我没有为此做任何具体的工作。

    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();
    

    现在在 Audacity 中,您可以 File -> Import -> Raw Data 并检查音频波形。

    【讨论】:

    • 你有没有让系统音频正常工作?
    • @BenRacicot 刚刚用我的经验更新了我的答案。希望对您有所帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多