确定哪个应用程序正在使用音频设备
Determine which application is using audio device
我目前在 macOS 中使用 CoreAudio 来确定是否正在使用特定的音频输入设备。我正在尝试查找有关该设备正在使用时发生的情况的更多信息,但很难找到有关如何执行此操作的任何信息。
1) 是否可以找到当前正在使用特定音频输入设备的应用程序?
2) 是否可以确定应用程序是否正在使用音频设备(输入或输出)以及该设备当前是否在该特定应用程序中静音?
谢谢
如果应用程序通过 kAudioDevicePropertyHogMode
占用了设备(即独占访问它),那么与 属性 关联的 pid_t
的值是进程 ID占用进程(如果设备未占用,则为 -1。)
否则,至少对于输出设备,多个应用程序可以共享设备并且各种音频流混合在一起。在那种情况下,你能做的最好的事情(据我所知)是检查 kAudioDevicePropertyDeviceIsRunningSomewhere
这会告诉你设备是否正在使用,但不会告诉你哪个进程 is/are 在使用它。
对于问题2,mute是属性的音频设备,具体是kAudioDevicePropertyMute
。如果任何应用程序将 属性 设置为 true,则设备将针对所有应用程序静音。
我目前在 macOS 中使用 CoreAudio 来确定是否正在使用特定的音频输入设备。我正在尝试查找有关该设备正在使用时发生的情况的更多信息,但很难找到有关如何执行此操作的任何信息。
1) 是否可以找到当前正在使用特定音频输入设备的应用程序?
2) 是否可以确定应用程序是否正在使用音频设备(输入或输出)以及该设备当前是否在该特定应用程序中静音?
谢谢
如果应用程序通过 kAudioDevicePropertyHogMode
占用了设备(即独占访问它),那么与 属性 关联的 pid_t
的值是进程 ID占用进程(如果设备未占用,则为 -1。)
否则,至少对于输出设备,多个应用程序可以共享设备并且各种音频流混合在一起。在那种情况下,你能做的最好的事情(据我所知)是检查 kAudioDevicePropertyDeviceIsRunningSomewhere
这会告诉你设备是否正在使用,但不会告诉你哪个进程 is/are 在使用它。
对于问题2,mute是属性的音频设备,具体是kAudioDevicePropertyMute
。如果任何应用程序将 属性 设置为 true,则设备将针对所有应用程序静音。