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

标签 swift macos audio hardware core-audio

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

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

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

谢谢

最佳答案

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

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

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

关于swift - 确定哪个应用程序正在使用音频设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41004926/

相关文章:

swift - 有没有更干净的方法来部分填充 tableView

ios - 如何在 Swift 中创建一个内联字典,同时忽略可能为 nil 的可选值?

ios - 使用 Swift 创建 iOS 应用程序,需要知道如何使用 mysql 数据库跟踪用户数据?

javascript - 在移动设备上使用 javascript 播放声音

audio - 具有特定截止频率的低通和高通滤波器

ios - 关闭一个 View Controller,然后呈现一个 Alert Controller

ruby - 在 OSX 上安装 Visual Ruby 时出错

swift - 数据迁移后的 Codesign keychain 问题 : "The specified item could not be found in the keychain."

xcode - 如何在 Mac 上编译/构建 Ada?

node.js - 音频文件未完全在语音 channel 中播放