我目前在macOS中使用CoreAudio來確定是否正在使用特定的音頻輸入設備。如果正在使用該設備,我試圖找到關於該設備正在發生的更多信息,但正在努力查找有關如何執行此操作的任何信息。確定哪個應用程序正在使用音頻設備
1)是否有可能找到當前正在使用特定音頻輸入設備的應用程序?
2)是否可以確定應用程序是否正在使用音頻設備(輸入或輸出)並且該設備目前已在該特定應用程序中靜音?
由於
我目前在macOS中使用CoreAudio來確定是否正在使用特定的音頻輸入設備。如果正在使用該設備,我試圖找到關於該設備正在發生的更多信息,但正在努力查找有關如何執行此操作的任何信息。確定哪個應用程序正在使用音頻設備
1)是否有可能找到當前正在使用特定音頻輸入設備的應用程序?
2)是否可以確定應用程序是否正在使用音頻設備(輸入或輸出)並且該設備目前已在該特定應用程序中靜音?
由於
如果應用程序已在碎木設備(即具有獨佔訪問它)經由kAudioDevicePropertyHogMode
,那麼相關聯的該屬性的pid_t
的值是粗加工進程的進程ID(或-1,如果該設備沒有被佔用。)
否則,至少對於輸出設備,多個應用程序可以共享設備並且各種音頻流被混合。在這種情況下,您可以做的最好的(我知道的)是檢查kAudioDevicePropertyDeviceIsRunningSomewhere
,它會告訴您設備是否在使用中,但不知道哪個進程正在使用它。
對於問題2,靜音是音頻設備的屬性,具體爲kAudioDevicePropertyMute
。如果任何應用程序將該屬性設置爲true,則該設備將爲所有應用程序靜音。