2011-05-31 125 views
5

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

如果麦克风插入了多个麦克风(USB,耳机插孔等),是否可以通过编程方式枚举并选择在应用程序中使用哪个麦克风进行音频输入? (例如,不必将用户发送到系统偏好面板,这可能会影响用户其他音频应用)。如果是这样,那么应该使用哪些API来选择麦克风输入。

回答

3

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

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

+0

我还没有机会检查这个答案与我的Mac上的另一个麦克风输入,但它看起来不错。 – hotpaw2 2011-12-31 22:03:46

0

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

+0

查看更新的问题。系统首选项具有全局性效果,不仅适用于我的音频应用程序。 – hotpaw2 2011-12-24 20:13:51

1

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

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

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

FWIW:如果你决定那是太多了,你可以大概还是使用AudioHardwareSetProperty设置kAudioHardwarePropertyDefaultInputDevice从你的代码 - 你想不是,但肯定少了工作......

+0

感谢您的链接,伟大的文件AudioUnit – 2017-05-16 07:50:28