OSX CoreAudio 麦克风输入静音与将音量设置为 0.0f
Posted
技术标签:
【中文标题】OSX CoreAudio 麦克风输入静音与将音量设置为 0.0f【英文标题】:OSX CoreAudio mic input mute vs. setting volume to 0.0f 【发布时间】:2013-11-16 05:07:38 【问题描述】:我正在尝试将 Logitech C920 网络摄像头 (OSX 10.8.5) 上的麦克风静音,但我尝试的两种实现都不能 100% 工作。如果有 Apple CoreAudio 经验的人可以看看,我将不胜感激。
这是我尝试过的:
通过 AudioObjectSetPropertyData() 设置静音:
address.mScope = kAudioDevicePropertyScopeInput;
address.mElement = kAudioObjectPropertyElementMaster;
address.mSelector = kAudioDevicePropertyMute;
这可行,我可以成功静音/取消静音,但最终我能够进入麦克风不再接收音频的状态。它似乎是通过在 C920 处于静音状态时将默认输入切换到内部麦克风并切换回 C920 麦克风来触发的。我发现让 C920 麦克风恢复良好状态的唯一方法是拔下 USB 电缆并将其重新插入。
通过 AudioObjectSetPropertyData() 将音量设置为 0.0f,使用:
address.mScope = kAudioDevicePropertyScopeInput;
address.mElement = kAudioObjectPropertyElementMaster;
address.mSelector = kAudioDevicePropertyVolumeScalar;
这几乎可行。 OSX UI 输入音量滑块一直向左移动,但麦克风仍在拾取一点点音频。啊啊啊啊好近啊!
打开“音频 MIDI 设置”应用会显示 C920 麦克风。当音量值设置为零时,dB 值为 20。当音量值设置为 1 时,db 值设置为 50。这与内置麦克风的 dB 范围看起来不同 - 12 到 12。不确定这是否重要。
在设置静音或音量时,我尝试获取各个通道并同时设置它们。好像没有影响。我认为设置主通道的两个输入设备都可以正常工作。
我想知道这是否是硬件问题。我应该注意到,Mac 上并未正式支持 Logitech C920(尽管有很多人使用它)。我能够毫无问题地控制内部麦克风。希望我只是忽略了一些东西:-)
【问题讨论】:
这绝对是苹果的错误或麦克风硬件的错误。我可以通过仅使用 osx Sound 应用程序重现麦克风停止工作的问题。重现步骤: 1. 选择相机麦克风作为默认输入设备, 2. 将滑块一直向左移动以使相机麦克风静音, 3. 将默认输入设备更改为内置麦克风, 4. 更改默认输入设备回到相机麦克风 + 向右移动滑块取消静音。现在它不再拾取声音,需要您拔下 USB 并重新插入才能使其再次工作。 更倾向于苹果错误,因为拔出 USB 有时需要多次操作才能重新开始工作。如果这是一个硬件错误,您会认为单次电源循环就可以解决问题。 【参考方案1】:将音量 kAudioDevicePropertyVolumeScalar 设置为零时。您还应该使用 kAudioDevicePropertyMute 将静音设置为 true。调整输入音量时,请注意检查静音状态。
例如:
-
将系统音频面板中的输入音量调整为 0
使用 kAudioDevicePropertyVolumeScalar 将输入音量调整为 100
查看分贝指示器,它保持在零,但滑块在 100。无法捕获麦克风的声音。使用 kAudioDevicePropertyMute 获取静音值,我们可以得到 mute = 1
结论:
系统输入有“静音”状态,但在音频设置面板中没有显示。音量调为零时系统会自动设置静音为真,音量大于零时系统会自动关闭静音。
【讨论】:
以上是关于OSX CoreAudio 麦克风输入静音与将音量设置为 0.0f的主要内容,如果未能解决你的问题,请参考以下文章