【发布时间】:2012-11-05 20:17:54
【问题描述】:
我想为 Mac OS X 开发一个应用程序来录制来自一个应用程序的音频。
我玩过 Soundflower,但它只能抓取完整的系统音频。
我知道我必须使用 HAL 插件。这个插件是从使用 Core Audio 的应用程序加载的,然后我可以与插件通信以获取音频。
我的问题是:这样的插件长什么样?网上有例子吗?我没有找到关于这个主题的任何信息。
【问题讨论】:
-
在这里澄清一下:您正在寻找类似
http://rogueamoeba.com/audiohijackpro/的东西,并且您想知道他们是如何做到的,对吧? -
PS,您可能想在 Soundflower 上玩得更多——在 SoundflowerBed 和 Soundflower16 之间,您通常可以绕过一些应用程序不允许您选择音频输出的事实。 (此外,如果您将其作为一次性使用,而不是出售应用程序,则将代码注入目标应用程序并强制它选择您的 Soundflower16 通道 3/4 输出可能更容易,而不是从头开始编写自己的插件。)
-
是的,没错。但是如何将一些代码注入到应用程序中以强制它选择 Soundflower 频道?网上有源代码吗?
-
好吧,如果它是一个 Cocoa 应用程序,那就简单了;查看 F-Script 注入服务以了解如何注入,然后您只需覆盖 ObjC 运行时中的内容。不需要 Cocoa 的替代方法是使用 SIMBL 在 C 级别中注入代码和挂钩函数,这很复杂。如果你已经知道怎么做,那肯定会更容易……但如果你不知道,可能不会那么容易。 (还有一个非常简单的选项:将 Soundflower 设置为默认音频输出,并将您的所有 other 应用程序设置为使用不同的音频输出。但这仅在您仅运行可配置应用程序时才有效。)
-
另外两个选项:首先,您要从哪个应用程序中获取音频?许多 Core Audio 应用程序已经有一种方法来配置输出,甚至可以在他们的偏好中进行自定义路由,如果可能的话,这显然是最简单的。其次,如果您只是想省钱,Piezo 的价格是 Audio Hijack 的一半,我认为它可以满足您的需求。当您在那里时,浏览 rogueamoeba 的博客和发行说明,了解他们在处理每个新操作系统版本(通常还有 Safari 和 QT 版本)时遇到的所有问题……
标签: objective-c cocoa audio record capture