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
相关产品推荐
相关产品推荐

