Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 为Mac音频队列服务选择输入麦克风?_Macos_Cocoa_Audio_Core Audio - Fatal编程技术网

Macos 为Mac音频队列服务选择输入麦克风?

Macos 为Mac音频队列服务选择输入麦克风?,macos,cocoa,audio,core-audio,Macos,Cocoa,Audio,Core Audio,我目前正在使用MacOSX音频队列服务API进行音频录制和声音分析。使用默认麦克风输入可以正常工作 如果Mac电脑(USB、耳机插孔等)中插入了多个麦克风,是否有方法通过编程枚举和选择应用程序中用于音频输入的麦克风?(例如,不必将用户发送到系统首选项面板,这可能会影响用户的其他音频应用程序。)如果是,应使用哪些API来选择麦克风输入。如果将音频队列设置为从默认输入设备读取,然后,它将从系统首选项->Soubd->输入选项卡中选择为默认值的麦克风中读取数据。恐怕不会,因为AQ是硬编码的,以使用默认

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


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

如果将音频队列设置为从默认输入设备读取,然后,它将从系统首选项->Soubd->输入选项卡中选择为默认值的麦克风中读取数据。

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

您不需要上面的清单4,因为您将为所选设备使用
AudioDeviceID
(可能是通过使用
AudioObjectGetPropertyDataSize
获取设备列表并选择所需的设备)


FWIW:如果你认为这太多了,你大概仍然可以使用
AudioHardwareSetProperty
从你的代码中设置
kAudioHardwarePropertyDefaultInputDevice
,这不是你想要的,但肯定少了一些工作…

要列举可用的输入设备,请参阅我的答案


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

请参阅更新的问题。System prefs具有全局效果,不仅适用于我的音频应用程序。我还没有机会用Mac上的另一个麦克风输入检查这个答案,但它看起来还可以。