如何使用Mac OS 10.6上的默认声音输出以编程方式列出当前的进程

问题描述

|| 我想知道是否存在一种编程方式(公共API,终端命令,AppleScript等)来列出当前通过Mac OS 10.6中的认声音输出播放声音的所有进程? 我已经尝试使用\“ lsof | grep -i coreaudio \”终端命令来列出在Core Audio上具有句柄的进程,但这并不能告诉我这些进程当前是否正在输出声音。他们可能以前已经输出声音,或者将来打算这样做。 例如,如果我打开Goog​​le Chrome,那么当我使用lsof命令时,它一开始没有列出。然后,如果我在Youtube上加载视频,则该视频会连接到Core Audio,因此会被列出。但是,当我处理完视频后,即使我完全关闭了浏览器窗口,即使显然不再播放声音,它仍被列为已连接到驱动程序。仅当我退出该过程时,它才会停止列出。 请注意,尽管在Windows平台上具有长期的C ++编程经验并且非常了解Windows API,但是我对Mac OS编程还是比较陌生,因此请理解是否遗漏了一些明显的知识。 谢谢, 弗朗索瓦·夏隆(FrançoisCharron)     

解决方法

我知道这篇文章很老,但是它确实有一些票,因此人们可能会通过搜索查询碰到它。 我非常确定这是不可能的,除非您编写一个CoreAudio插件,该插件嵌入在每个使用CoreAudio的进程中。这项工作与创建Mac版本的Windows Volume Mixer非常相似。 有一个开源的实现(https://github.com/zonque/PulseAudioOSX),尽管它没有维护,我也没有运气来构建它。还有诸如Prosoft Engineering的Hear之类的专有解决方案应该能够做到这一点,但我认为它们不提供查询API。 注意:我已经建立了MuteTab,它试图在浏览器中做同样的事情(在Flash更改和引入音频指示器之前),并且已经建立了Mutt.fm(Windows),这需要它以及控制音量的能力如果我将其移植到OSX上。