Выбор входного микрофона для Mac Audio Queue Services? - PullRequest
5 голосов
/ 31 мая 2011

В настоящее время я использую API служб Mac OS X Audio Queue Services для записи звука и анализа звука. Работает нормально, используя микрофонный вход по умолчанию.

Если к Mac подключено более одного микрофона (USB, разъем для гарнитуры и т. Д.), Есть ли способ программно перечислить и выбрать, какой микрофон будет использоваться для ввода звука в приложении? (Например, не нужно отправлять пользователя на панель системных настроек, что может повлиять на пользователей других аудиоприложений.) Если это так, какие API следует использовать для выбора входа микрофона.

Ответы [ 3 ]

3 голосов
/ 29 декабря 2011

Чтобы перечислить доступные устройства ввода, см. Мой ответ на AudioObjectGetPropertyData, чтобы получить список устройств ввода .

Как только вы определили устройство ввода, которое хотите использовать, вы можете установить для свойства kAudioQueueProperty_CurrentDevice UID устройства.

1 голос
/ 29 декабря 2011

Боюсь, нет, потому что AQ жестко запрограммирован на использование ввода по умолчанию (насколько мне известно).AQ довольно ограничен, и только iOS дает больше контроля через AutoSessions.Однако вы можете использовать AUHAL для записи с произвольного устройства:

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

Вам не понадобится перечислять 4 сверху, потому что вы будете использовать AudioDeviceID для устройства, которое вывыбрали (предположительно, получив список устройств с помощью AudioObjectGetPropertyDataSize и выбрав нужное вам устройство).

FWIW: если вы решите, что это слишком много, вы, вероятно, по-прежнему можете использовать AudioHardwareSetProperty для установки kAudioHardwarePropertyDefaultInputDeviceиз вашего кода - не то, что вы хотели, но, конечно, меньше работы ...

0 голосов
/ 17 июня 2011

Если вы настроите Аудио-очередь для чтения с устройства ввода по умолчанию, она будет считываться с микрофона, который выбран по умолчанию на вкладке Системные настройки-> Soubd-> Ввод.

...