OSX CoreAudio麦克风输入静音与设置音量为0.0f

时间:2013-11-16 05:07:39

标签: macos core-audio xcode5 audiotoolbox

我正在尝试将我的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输入音量滑块一直向左移动,但麦克风仍在拾取一点音频。 Uhhhhggg如此接近!

打开“音频MIDI设置”应用程序会显示C920麦克风。当音量值设置为零时,dB值为20.当音量值设置为1时,db值设置为50.这与内置麦克风不同,看起来它的dB范围为 - 12至12.不确定这是否重要。

设置静音或音量时,我尝试抓取各个频道并设置它们。似乎没有影响。我认为使用两个输入设备设置主通道工作正常。

我想知道这可能是硬件问题。我应该注意到Mac上没有正式支持Logitech C920(虽然很多人都使用它)。我能够毫无问题地控制内置麦克风。希望我只是忽略了一些东西: - )

1 个答案:

答案 0 :(得分:1)

将音量kAudioDevicePropertyVolumeScalar设置为零时。您还应该使用kAudioDevicePropertyMute将静音设置为true。调整输入音量时,请注意检查静音状态。

例如:

  1. 将系统音频面板中的输入音量调整为0
  2. 使用kAudioDevicePropertyVolumeScalar将输入音量调整为100
  3. 查看db指示器,它保持零,但滑块位于100。无法捕获来自麦克风的声音。使用kAudioDevicePropertyMute获取静音值,我们可以获取静音= 1

结论:

系统中的输入处于“静音”状态,但在音频设置面板中未显示。当将音量调整为零时,系统会自动将静音设置为true;而当音量大于零时,系统会禁用静音。