You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在macOS中使用CoreAudio获取输入音频设备列表?

问题根源与解决方案

核心问题:麦克风权限未配置

macOS 10.14(Mojave)及以后版本,访问音频输入设备(如麦克风)需要明确的权限申请。如果你的App没有配置麦克风权限,CoreAudio会直接隐藏输入设备的相关信息,导致你只能看到输出设备。

具体修复步骤

1. 添加权限描述到Info.plist

在项目的Info.plist文件中添加麦克风权限说明:

  • 可视化编辑器操作:添加键Privacy - Microphone Usage Description,值填写权限用途(例如“需要访问麦克风以获取音频输入设备信息”)
  • 源码编辑方式:插入以下XML片段
<key>NSMicrophoneUsageDescription</key>
<string>需要访问麦克风以获取音频输入设备信息</string>

2. 主动请求麦克风权限

CoreAudio本身不会触发系统权限弹窗,需通过AVFoundation主动申请权限。在调用设备列表获取方法前执行以下代码:

import AVFoundation

func requestMicrophonePermission() {
    AVCaptureDevice.requestAccess(for: .audio) { granted in
        if granted {
            let devices = AudioDevicesManager.getAudioDevices()
            // 处理获取到的设备列表
        } else {
            print("麦克风权限被拒绝,无法获取输入设备")
        }
    }
}

3. 补充错误日志排查(可选)

在获取输入通道的代码块中增加错误日志,方便定位权限问题:

// Get input channels
propertyAddress.mSelector = kAudioDevicePropertyStreamConfiguration
propertyAddress.mScope = kAudioDevicePropertyScopeInput
status = AudioObjectGetPropertyDataSize(deviceID, &propertyAddress, 0, nil, &propertySize)
if status != noErr {
    print("获取输入通道失败,错误码:\(status)")
    // 错误码kAudioHardwarePermissionsError直接指向权限不足
} else {
    // 原有的输入通道获取逻辑
}

验证

配置并通过权限申请后,MacBook麦克风会出现在设备列表中,对应的inputChannels值会大于0。

内容的提问来源于stack exchange,提问作者user159925

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 19:44:58