如何选择外接麦克风
Posted
技术标签:
【中文标题】如何选择外接麦克风【英文标题】:How to select external microphone 【发布时间】:2017-05-26 06:21:40 【问题描述】:我已经成功地为 ios 编写了一个使用 AVAudioRecorder 的简单录音应用程序。到目前为止,如果它插入耳机插孔,它可以与内部麦克风或外部麦克风一起使用。如何选择通过 USB“闪电端口”连接的音频源?我必须深入了解 Core Audio 吗?
具体来说,我正在尝试连接 Apogee Electronics ONE USB 音频接口。
【问题讨论】:
【参考方案1】:使用 AVAudioSession,获取 availableInputs。返回值是一个 AVAudioSessionPortDescriptions 数组。遍历数组检查 portType 属性以匹配您的首选端口类型,然后使用端口描述设置 preferredInput。
斯威夫特:
let audioSession = AVAudioSession.sharedInstance()
if let desc = audioSession.availableInputs?.first(where: (desc) -> Bool in
return desc.portType == AVAudioSessionPortUSBAudio
)
do
try audioSession.setPreferredInput(desc)
catch let error
print(error)
目标-C:
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSString *preferredPortType = AVAudioSessionPortUSBAudio;
for (AVAudioSessionPortDescription *desc in audioSession.availableInputs)
if ([desc.portType isEqualToString: preferredPortType])
[audioSession setPreferredInput:desc error:nil];
【讨论】:
甜蜜!我会把 Core Audio 留到另一个不眠之夜。我仍在等待硬件对其进行测试,但这正是我所寻找的。谢谢!【参考方案2】:您需要为此导入 AVFoundation。使用 AVAudioSession 的共享实例,您可以识别当前路由,即 AVAudioSessionPortDescription 将帮助您识别端口类型。我相信您不能选择特定的麦克风,但您可以识别和检查会话的 currentRoute
AVAudioSession *session = [AVAudioSession sharedInstance];
AVAudioSessionPortDescription *input = [[session.currentRoute.inputs count] ? session.currentRoute.inputs:nil objectAtIndex:0];
if ([input.portType isEqualToString:AVAudioSessionPortLineIn])
NSLog(@"Audio Route: Input Port: LineIn");
else if ([input.portType isEqualToString:AVAudioSessionPortBuiltInMic])
NSLog(@"Audio Route: Input Port: BuiltInMic");
else if ([input.portType isEqualToString:AVAudioSessionPortHeadsetMic])
NSLog(@"Audio Route: Input Port: HeadsetMic");
else if ([input.portType isEqualToString:AVAudioSessionPortBluetoothHFP])
NSLog(@"Audio Route: Input Port: BluetoothHFP");
else if ([input.portType isEqualToString:AVAudioSessionPortUSBAudio])
NSLog(@"Audio Route: Input Port: USBAudio");
else if ([input.portType isEqualToString:AVAudioSessionPortCarAudio])
NSLog(@"Audio Route: Input Port: CarAudio");
else
NSLog(@"Audio Input Port: Unknown: %@",input.portType);
【讨论】:
问题被标记为 Swift 3以上是关于如何选择外接麦克风的主要内容,如果未能解决你的问题,请参考以下文章