确定哪个应用程序正在使用音频设备

Posted

技术标签:

【中文标题】确定哪个应用程序正在使用音频设备【英文标题】:Determine which application is using audio device 【发布时间】:2016-12-06 21:07:22 【问题描述】:

我目前在 macOS 中使用 CoreAudio 来确定是否正在使用特定的音频输入设备。我试图找到更多关于该设备正在使用的情况的信息,但很难找到有关如何执行此操作的任何信息。

1) 是否可以找到当前正在使用特定音频输入设备的应用程序?

2) 是否可以确定应用程序是否正在使用音频设备(输入或输出)并且该设备当前是否在该特定应用程序中静音?

谢谢

【问题讨论】:

我正在尝试使用 c++ 来解决这个问题。但我不知道该怎么做。你有它的参考代码吗? 【参考方案1】:

如果应用程序通过kAudioDevicePropertyHogMode 占用了设备(即拥有对它的独占访问权),则与该属性关联的pid_t 的值是占用进程的进程ID(如果设备则为-1没有被占用。)

否则,至少对于输出设备,多个应用程序可以共享设备,并且各种音频流混合在一起。在这种情况下,你能做的最好的事情(据我所知)是检查kAudioDevicePropertyDeviceIsRunningSomewhere,它会告诉你设备是否正在使用,而不是哪个进程正在使用它。

对于问题 2,静音是音频设备的一个属性,特别是 kAudioDevicePropertyMute。如果任何应用程序将该属性设置为 true,则设备将对所有应用程序静音。

【讨论】:

以上是关于确定哪个应用程序正在使用音频设备的主要内容,如果未能解决你的问题,请参考以下文章

如何从 iOS 应用程序确定正在使用哪个苹果推送通知服务器 (APNS)

Android - 用于检查哪个设备(有线耳机或 USB 耳机)正在播放音频的 API(如果两者都已连接)

Android 上的实时音频卷积

winmm.dll的文件信息

如何检查音乐是不是正在从哪个音乐应用程序播放?

使用Nearby Connections API进行音频流式传输