HAL - 如何在Mac上监控音频输出

6

有一个名为WireTap的应用程序可在http://www.ambrosiasw.com/utilities/wiretap/上获得。

该应用程序可以记录系统音频。我希望能够在我的程序中实现相同的功能。您有什么见解?我熟悉核心音频,但尚未找到如何实现此操作的任何信息。

这会对获取答案有帮助吗?我输入了命令行:ioreg -w0 -l | grep io |more
这是我在wiretap中发现的内容...可能还有更多相关信息接近我找到的地方:
+-o com_AmbrosiaSW_AudioSupport <class com_AmbrosiaSW_AudioSupport, registered, matched, active, busy 0, retain 4 >
"CFBundleIdentifier" = "com.AmbrosiaSW.AudioSupport"
"IOMatchCategory" = "com_AmbrosiaSW_AudioSupport"
"version" = 2
"IOClass" = "com_AmbrosiaSW_AudioSupport"
yan-bellavances-mac-mini:~ ybellavance$ ioreg -w0 -l | grep io |more

2个回答

1
短答案是不行的,除非你有人脉或者非常有经验/天赋(我对mac开发还很陌生)。我打算在Darwin开源部分使用audioEngine示例。
以下是我从core-audio邮件列表中得到的答案:
“没有API可以做到这一点,只有各种各样的hack/解决方案。最直接的方法是编写一个虚拟驱动程序来实现你想要的功能。Soundflower和JACK就是这种方法的好例子。Soundflower使用内核驱动程序,而JACK使用用户空间驱动程序。
人们很聪明,他们也想出了其他方法。但如果他们有意分享自己的技术,我会让他们自己说。无论如何,你可能需要通过阅读列表档案开始学习这个话题,因为这个话题经常出现。”

0

另一个类似的开源工具是SoundFlower。该工具通过注册为音频输出设备来工作。它不是物理设备,而是虚拟输出设备,可以转发到其他设备或返回到输入。

这是一种记录系统音频输出的策略--出现为音频输出设备,并使系统通过此虚拟设备播放。除了录制音频外,您还可以将其转发到扬声器以实现透明效果。如果您有兴趣追求这条路线,可以使用SoundFlower作为示例。


是的,我研究了Soundflower,但它需要创建一个新的音频引擎,这不是Wire Tap所做的。最终我会这样做,但我想要一种新的方法来完成它。实际上,你可以查找Mac OS X的源代码,并获得创建音频引擎的代码和Xcode示例。 - yan bellavance

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接