以编程方式录制声音发送到内置输出,Mac OS X

Posted

技术标签:

【中文标题】以编程方式录制声音发送到内置输出,Mac OS X【英文标题】:programmatically recording sound sent to Built-in Output, Mac OS X 【发布时间】:2010-10-30 01:05:37 【问题描述】:

我有一个难题:

我需要找到一种方法来捕获通过管道传输到 Mac OS X 上的内置输出的原始音频数据。Core Audio、HAL 等。

我可以在内置输出和麦克风上“收听”,但它们似乎都没有提供正确的数据流 - 进入扬声器/内置的确切流(来自所有输入源的所有组合数据) -in 输出。

欢迎任何建议。

【问题讨论】:

自 2009 年以来,您是否找到了实现这一目标的方法? 我很想知道您如何从所有输入源获取所有组合数据 【参考方案1】:

也许你应该看看 Jack 源代码...

http://sourceforge.net/projects/jackosx

【讨论】:

【参考方案2】:

您是否需要从您的程序中访问该流,或者您只想从中提取音频?在第二种情况下,一个快速的谷歌搜索出现了http://www.ambrosiasw.com/utilities/wiretap/ 和http://www.rogueamoeba.com/audiohijackpro/。不过,这些都不是开源或免费的。

编辑——哎呀,你想以编程方式访问,这回答了我自己的问题,对不起。我想我会在此处保留我的答案,以防有些人偶然发现此页面想要以非编程方式录制音频。

【讨论】:

Wiretap 就像我需要实现的一样 - 它捕获传出流。我只需要深入了解诸如窃听之类的应用程序如何与 Core Audio 和/或 HAL 交互。【参考方案3】:

您需要您的应用安装系统扩展。 Soundflower 是此类扩展的开源实现。

【讨论】:

请进一步解释。我见过 Soundflower 并理解它是不同音频设备之间的桥梁。我不明白这如何适用于这种特殊情况...... 如果我理解正确,您想录制混合系统音频。使用soundflower,您可以做到这一点。据我所知,这就是 Rogue Amoebas Audio Hijack Pro 中系统录音的工作方式。如果您选择“系统音频”作为输入源,它会询问您是否应该安装 soundflower 系统扩展。当然,我们需要进行实际记录的代码。 (正如我们在这里回答您的 SO 问题:***.com/questions/871819/…) 这是让我烦恼的事情。如果安装了 SoundFlower,则需要重新启动。但是,当使用诸如 WireTap 之类的应用程序时,它不需要额外的安装 - 您将其复制到 Applications 目录并可以直接运行它。我需要知道的是允许这样的应用程序在不额外安装的情况下获得混合系统音频的“魔法”。

以上是关于以编程方式录制声音发送到内置输出,Mac OS X的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式配置 Mac OS X MIDI

一个简单的 Mac OS X 声音应用程序

Mac OS X 声音输出

Mac os x以编程方式获取域名

以编程方式启动 Mac 的系统偏好设置屏幕 -> 声音

以编程方式在 Mac OS X 上创建 PPTP ***