为Mac Audio Queue Services选择输入麦克风?

时间:2011-05-31 08:16:33

标签: macos cocoa audio core-audio

我目前正在使用Mac OS X音频队列服务API进行录音和声音分析。使用默认麦克风输入正常工作。

如果有多个麦克风插入Mac(USB,耳机插孔等),有没有办法以编程方式枚举并选择哪个麦克风用于应用程序中的音频输入? (例如,不必将用户发送到系统首选项面板,这可能会影响用户的其他音频应用程序。)如果是这样,应使用哪些API来选择麦克风输入。

3 个答案:

答案 0 :(得分:3)

要枚举可用的输入设备,请参阅我对AudioObjectGetPropertyData to get a list of input devices的回答。

确定了要使用的输入设备后,可以将kAudioQueueProperty_CurrentDevice属性设置为设备的UID。

答案 1 :(得分:1)

我担心,不,因为AQ被硬编码为使用默认输入(据我所知)。 AQ相当有限,只有iOS通过AutoSessions提供更多控制。但是,您可以使用AUHAL从任意设备进行录制:

http://developer.apple.com/library/mac/#technotes/tn2091/_index.html

您不需要上面的列表4,因为您将AudioDeviceID用于您选择的设备(可能是通过使用AudioObjectGetPropertyDataSize获取设备列表并选择你想要的一个。)

FWIW:如果你认为太多了,你可能仍然会使用AudioHardwareSetProperty从你的代码中设置kAudioHardwarePropertyDefaultInputDevice - 不是你想要的,但肯定会少工作......

答案 2 :(得分:0)

如果将音频队列设置为从默认输入设备读取,则它将从系统偏好设置 - > Soubd->输入选项卡中默认选择的麦克风中读取。