Objective c 使用Cocoa检测正在运行的应用程序何时播放音频

Objective c 使用Cocoa检测正在运行的应用程序何时播放音频,objective-c,cocoa,macos,audio,Objective C,Cocoa,Macos,Audio,我正在研究编写一个作为后台进程运行的应用程序,并检测应用程序(比如Safari)何时播放音频。我可以使用NSWorkspace获取当前正在运行的应用程序的进程ID,但在检测这些进程正在做什么时,我不知所措。我假设有一种方法可以监听进程并检测对象发送的公共消息。我为我对这个问题的无知道歉 有没有人尝试过类似的事情,或者知道有什么资源可以提供帮助?是一个开源项目,它允许Mac OS X应用程序相互传递音频。几乎可以肯定,它的功能与您描述的类似。另一个线程告诉我,虽然这是可能的,但它是一种非常先进的技

我正在研究编写一个作为后台进程运行的应用程序,并检测应用程序(比如Safari)何时播放音频。我可以使用
NSWorkspace
获取当前正在运行的应用程序的进程ID,但在检测这些进程正在做什么时,我不知所措。我假设有一种方法可以监听进程并检测对象发送的公共消息。我为我对这个问题的无知道歉


有没有人尝试过类似的事情,或者知道有什么资源可以提供帮助?

是一个开源项目,它允许Mac OS X应用程序相互传递音频。几乎可以肯定,它的功能与您描述的类似。

另一个线程告诉我,虽然这是可能的,但它是一种非常先进的技术,不推荐使用。这将涉及使用,并且被认为是一件不“好”的事情。看来这个应用程序的想法注定要被扔进天上的回收站:)

我认为你的“答案”根本不是答案

还有一个答案(不是“42”)

要做到这一点,最好的办法是编写一个直通音频输出设备。事实上,很像soundflower。因此,您的音频输出设备将加载实际(物理)音频输出设备,并将音频数据直接传递给它(当然,首先查看音频流之后!)。然后,您只需说服用户将音频设备配置为默认音频输出设备,以便大多数播放声音的应用程序将自动使用它。瞧

您的音频处理功能可能只是在将缓冲区传递到实际输出设备之前对缓冲区进行快速RMS。当音频功率超过某个阈值时(苹果的音频硬件可能是-54dB),你就会知道某个应用程序正在发出声音


|KCool,我正在使用SoundFlower,但我完全忘记了它是开源的。谢谢你的信息。