2009-04-14 27 views
4

我正在研究编写作为后台进程运行的应用程序,并检测应用程序(例如Safari)何时播放音频。我可以使用NSWorkspace来获取当前正在运行的应用程序的进程ID,但是在检测这些进程正在执行的过程中,我感到茫然。我假设有一种方法可以监听进程并检测对象正在发送的公共消息。对于我对这个问题的无知,我表示抱歉。使用Cocoa检测正在运行的应用程序何时播放音频

有没有人尝试过这样的事情,或知道任何可以帮助的资源?

回答

1

我已被告知另一个线程,虽然这是可能的,但它是一种非常先进的技术,不建议。这将涉及使用Application Enhancer (APE),被认为是不好的事情。貌似该应用程序的想法注定在天空:)

2

SoundFlower是一个开源项目,允许Mac OS X应用程序将音频传递给对方。它几乎肯定会和你描述的类似。

+0

很酷,我使用的是SoundFlower,但我完全忘了它是开源的。感谢这个信息。 – 2009-04-14 20:31:56

1

我不认为你的“答案”是一个答案在所有的大型回收站...

,并有一个答案(这不是“42”)

这样做的最好方法是编写一个传递音频输出设备。实际上,就像听起来像花一样。所以你的音频输出设备会加载实际的(物理)音频输出设备,并直接将音频数据传递给它(当然,首先看一下音频流!)。那么您只需说服用户将您的音频设备配置为默认音频输出设备,以便大多数播放声音的应用程序将自动使用它。并且瞧...

你的音频处理函数可能只是在将缓冲区传递给实际输出设备之前对缓冲区执行快速RMS。当音频功率超过某个阈值时(可能与苹果音频硬件一样-54dB),那么你知道某些应用正在发出声音。

| K <

相关问题