我正在研究编写一个作为后台进程运行并检测应用程序(例如 Safari)何时播放音频的应用程序。我可以使用 NSWorkspace
获取当前正在运行的应用程序的进程 ID,但在检测这些进程正在执行的操作时我不知所措。我假设有一种方法可以监听进程并检测对象发送的公共(public)消息。对于我对这个问题的无知,我深表歉意。
有没有人尝试过类似的事情或知道任何可以提供帮助的资源?
最佳答案
我不认为你的“答案”是一个答案......
并且有一个答案(不是“42”)
这样做的最佳选择是编写一个直通音频输出设备。实际上,很像 soundflower。因此您的音频输出设备随后将加载实际(物理)音频输出设备并将音频数据直接传递给它(当然是在首先查看音频流之后!)。那么您只需要说服您的用户将您的音频设备配置为默认音频输出设备,这样大多数播放声音的应用程序就会自动使用它。瞧……
您的音频处理函数可能只是在将缓冲区传递到实际输出设备之前对缓冲区进行快速 RMS。当音频功率超过某个阈值(苹果音频硬件可能是 -54dB)时,您就知道某个应用正在发出声音。
|K<
关于objective-c - 使用 Cocoa 检测正在运行的应用程序何时播放音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/748949/