【问题标题】:Capture sound output on mac在 mac 上捕获声音输出
【发布时间】:2010-02-02 21:57:39
【问题描述】:

我正在尝试将我的屏幕保护程序从 Windows 移植到 Mac,其功能之一是对系统声音输出做出反应。在 Windows 上使用 Direct Sound 很容易,但我找不到任何在 mac 上捕获声音输出的示例。如果不编写内核扩展之类的东西,甚至有可能吗?使用 flash 也很容易——它甚至提供了computeSpectrum 方法来获取原始数据甚至是 fft 转换的数据。

我已经找到的所有程序都使用Soundflower 或它们自己的内核扩展。但我不认为要求安装单独的程序或使用内核扩展是一个好方法。

【问题讨论】:

    标签: macos audio capture


    【解决方案1】:

    考虑到 Soundflower 是开源的,您可以做的一件事就是看看他们是如何做到的。您无法复制和粘贴 GPL 代码,但您肯定可以研究使用的技术并创建自己的解决方案(为您指明正确的方向)。

    您不会发现 Apple 在这里很有帮助。以这种方式,声音捕获可用于各种邪恶目的。我什至不确定 Core Audio 是否能让你在没有黑客的情况下做到这一点。在任何情况下,你都有一个你想要完成的工作的实现。我会好好利用它的。

    【讨论】:

    • 我不推荐使用它。我建议对其进行逆向工程。您寻找的示例是 Soundflower 本身的源代码。顺便说一句,如果您正确打包,安装内核扩展是透明的。
    • 我不喜欢它需要管理员权限才能安装。但我认为你是对的。
    • 你的答案不是我所希望的,但据我所知,这是唯一的方法。
    • 内核扩展并不像你想象的那么痛苦。那一定会很好玩!你会在操作系统的地牢中四处游荡,让你的盒子崩溃几次,并学到很多你不想知道的事情。对不起,但这种编码让我兴奋。 :)
    【解决方案2】:

    我现在不在我的 Mac 上,但我很确定 Quartz Composer 有一个补丁可以解决这个问题。根据您编写屏幕保护程序的语言,将代码移植到 QC patch 可能相当容易。嗯……这可能并不容易,但它可能是可行的。

    【讨论】:

    • 我认为你可以做任何你可以用代码中的 QC 补丁做的事情,不是吗?
    • 在 Quartz Composer 中,我找到了处理输入声音的唯一方法,而不是输出。另外我的屏幕保护程序不是很轻量级,所以我更喜欢在 OpenGL 中使用 Objective-C++。
    猜你喜欢
    • 2010-11-20
    • 2013-10-22
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多