gpt4 book ai didi

objective-c - 录制一个应用程序的声音

转载 作者:行者123 更新时间:2023-12-03 17:31:52 24 4
gpt4 key购买 nike

我想为 Mac OS X 开发一款应用程序来从一个应用程序录制音频。

我尝试过 Soundflower,但它只能获取完整的系统音频。
我知道我必须使用 HAL 插件。该插件是从使用 Core Audio 的应用程序加载的,然后我可以与该插件通信以获取音频。

我的问题是:这样的插件是什么样子的?互联网上有例子吗?我没有找到任何有关此主题的信息。

最佳答案

既然您已经确定使用 cocoa 注入(inject)是解决您问题的可行解决方案,那么我们就从这里开始吧。

您需要做的是找出应用程序中的 ObjC 类如何设置来播放音频,并 Hook 以设置不同的 AU 来代替默认的系统输出。

有两个选项(除了从头开始编写您自己的自定义 AU,您不需要这样做)。您可以使用AUHAL作为AU,并从AUHAL捕获数据。从连接的角度来看,这更容易一些,但这意味着您必须编写渲染和保存音频的代码。或者你可以直接挂接一个保存到文件的 AU,这有点难挂接,但是一旦你这样做了,它就会自动处理渲染。

那么,如何把东西挂起来呢?好吧,大多数高级 CA 调用都是为了写入当前输出而编写的。如果应用程序以这种方式执行操作,您只需在启动时 Hook 即可找到替换 AU 并将其设置为当前输出,以代替默认输出。另一方面,如果应用程序直接写入存储在变量中的 AU,则必须 Hook 它才能将 AU 存储为变量。如果它正在构建 AU 图表,您可以替换默认输出,或者将您的输出放在图表中的前面。

参见TN2091对于一些示例代码片段,对于大多数困难部分,对于大多数可能性。它没有向您展示如何将它们组合在一起,并且它更多地涉及设置输入而不是输出(因为这更难),并且术语可能会令人困惑,但是如果您仔细阅读它,您应该能够找到您需要的零件。

如果您之前还没有构建过简单的 AU 主机和 AU 插件,那么您确实应该花时间完成整个过程 Audio Unit Development Fundamentals指导。 (如果你认为你真的不需要知道所有这些来做一些简单的事情,那你就错了。 Why CoreAudio is Hard 解释了一半的原因;OS X 版本之间的变化是另一半的原因。)

您可能还想查看CocoaDev's CoreAudioAndAudioUnitsTutorial页面占位符页面,提供从未有人编写过的完整教程,其中包含许多有用内容的链接。

同时,如果注入(inject)整个MTCoreAudio框架到应用程序中是可行的,它附带了大量漂亮、完整的示例。事实上,即使您不打算使用该框架,也值得阅读 Overview文档,可能还有源代码。

关于objective-c - 录制一个应用程序的声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13239699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com