【问题标题】:Selecting input mic for Mac Audio Queue Services?为 Mac 音频队列服务选择输入麦克风?
【发布时间】:2011-09-05 07:10:38
【问题描述】:

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

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

【问题讨论】:

    标签: macos cocoa audio core-audio


    【解决方案1】:

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

    【讨论】:

    • 查看更新的问题。系统首选项具有全局影响,不仅适用于我的音频应用。
    【解决方案2】:

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

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

    您不需要上面的清单 4,因为您将使用 AudioDeviceID 来表示您选择的设备(大概是通过使用 AudioObjectGetPropertyDataSize 获取设备列表并选择您想要的设备)。

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

    【讨论】:

      【解决方案3】:

      要列举可用的输入设备,请查看我对AudioObjectGetPropertyData to get a list of input devices 的回复。

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

      【讨论】:

      • 我没有机会在我的 Mac 上使用另一个麦克风输入来检查这个答案,但看起来还可以。
      猜你喜欢
      • 2017-09-17
      • 1970-01-01
      • 2014-01-01
      • 2011-04-29
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      • 2014-10-21
      • 1970-01-01
      相关资源
      最近更新 更多