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

Swift:如何在macOS上获取当前默认录音输入设备

获取Swift中当前录音输入设备的方法

你用AVAudioRecorder录音的话,这个类本身并没有直接提供获取输入设备的属性,但我们可以通过AVAudioSession(音频会话)来获取当前正在使用的录音设备——毕竟所有的音频输入输出都是由音频会话统一管理的。

下面是具体的实现步骤和代码示例:

1. 核心思路

音频会话的currentRoute属性包含了当前音频路由的所有输入、输出端口,我们只需要从中取出第一个输入端口,就能拿到当前录音设备的详细信息。

2. 代码实现

import AVFoundation

// 获取系统共享的音频会话实例
let audioSession = AVAudioSession.sharedInstance()

do {
    // 确保音频会话处于活跃状态(如果你的录音已经启动,这一步可能已自动完成,但保险起见还是加上)
    try audioSession.setActive(true)
    
    // 从当前路由中获取第一个输入端口
    guard let inputPort = audioSession.currentRoute.inputs.first else {
        print("未检测到可用的录音输入设备")
        return
    }
    
    // 提取设备关键信息
    let deviceName = inputPort.portName
    let deviceType = inputPort.portType.rawValue
    let deviceUID = inputPort.uid
    
    print("当前录音设备信息:")
    print("名称:\(deviceName)")
    print("类型:\(deviceType)")
    print("唯一标识:\(deviceUID)")
} catch {
    print("获取音频会话信息出错:\(error.localizedDescription)")
}

3. 关键字段说明

  • portName:设备的友好名称,比如"内置麦克风"或者"耳机麦克风"
  • portType:设备的类型枚举值,常见的有:
    • builtInMic:设备内置麦克风
    • headsetMic:耳机附带的麦克风
    • lineIn:线路输入设备
  • uid:设备的唯一标识符,用于区分不同的硬件设备

注意事项

  • 务必在项目的Info.plist中添加NSMicrophoneUsageDescription权限描述,否则录音会失败,也无法获取设备信息
  • 如果你的录音代码已经成功启动,音频会话应该已经处于活跃状态,但手动调用setActive(true)可以避免一些边缘情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:57:39