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

时间:2011-05-25 04:36:20

标签: macos audio core-audio

我想知道是否有一种编程方式(公共API,终端命令,AppleScript等)列出当前通过Mac OS 10.6中默认声音输出播放声音的所有进程?

我已经尝试使用“lsof | grep -i coreaudio”终端命令列出具有Core Audio句柄的进程,但这并不能告诉我这些进程当前是否正在输出声音;他们之前可能已经输出了声音,或者他们打算将来也会这样做。

例如,如果我打开谷歌浏览器,我首先使用lsof命令时不会列出它。然后,如果我在Youtube上加载视频,它会连接到Core Audio,因此会被列出。但是,当我完成视频时,即使我完全关闭浏览器窗口,它仍然被列为连接到驱动程序,即使它显然不再播放声音。它只在我退出流程时停止列出。

请注意,虽然在Windows平台上使用C ++有很长的编程经验并且非常了解Windows API,但我对Mac OS编程很新,所以如果我错过了一些明显的东西,请理解。

谢谢, 弗朗索瓦·查龙

1 个答案:

答案 0 :(得分:-1)

我知道这篇文章已经很老了,但它确实有一些投票,所以人们可能会通过搜索查询遇到它。

我非常确定,除非您编写一个嵌入在使用CoreAudio的每个进程中的CoreAudio插件,否则这是不可能的。这项工作非常类似于创建Windows版本的Windows Volume Mixer。

有一个(https://github.com/zonque/PulseAudioOSX)的开源实现,虽然它没有维护,但我没有很好的运行来构建它。还有一些专有的解决方案,例如Prosoft Engineering的Hear应该可以做到这一点,但我认为它们不提供查询的API。

注意:我已经构建了MuteTab,它试图在浏览器中做同样的事情(在更改Flash之前和音频指示器的引入之前)并构建了mute.fm(Windows),这需要这个以及能够如果我将其移植到OSX上,则控制卷。