将 AVAudioSession 模式设置为 AVAudioSessionModeVideoChat 时出现麦克风低语音录制问题
Posted
技术标签:
【中文标题】将 AVAudioSession 模式设置为 AVAudioSessionModeVideoChat 时出现麦克风低语音录制问题【英文标题】:Microphone low voice recording issue when AVAudioSession mode is set to AVAudioSessionModeVideoChat 【发布时间】:2014-02-14 01:47:06 【问题描述】:根据AVAudiosessionModeVideoChat
的文档 -
使用此模式时,设备的音调均衡针对语音进行了优化,允许的音频路由集减少到仅适用于视频聊天的那些。
所以系统会降低适合该模式的音频输出和输入路由的默认灵敏度。
我将 setMode 用于AVAudioSessionModeVideoChat
,以便应用程序/系统即时自动识别并适应硬件集成(有线和蓝牙耳机)。但是,似乎将此模式设置为视频聊天会大大降低内置麦克风的灵敏度,因此声音会以低音录制。我的目标应用用户大多处于嘈杂的环境中。
有什么方法可以将输入和输出灵敏度提高到最大,同时利用AVAudioSessionModeVideoChat
模式?
以下是用于在我的应用程序中设置 AudioSession 的代码...
if (![[[AVAudioSession sharedInstance] category] isEqualToString:AVAudioSessionCategoryPlayAndRecord])
[[AVAudioSession sharedInstance] setActive:NO error:&error];
[[AVAudioSession sharedInstance] setActive:YES error:&error];
NSLog(@"setActive error = %@", error);
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];
NSLog(@"setCategory error = %@", error);
[[AVAudioSession sharedInstance] setMode:AVAudioSessionModeVideoChat error:&error];
NSLog(@"setMode error = %@", error);
测试环境详情:-
设备测试:iPad mini Retina 4G 和 iPad 2
iOS:7.0.3
使用内置扬声器和麦克风的设备进行测试。
【问题讨论】:
【参考方案1】:以下是适用于我的应用目标用户的一种可能的替代解决方案/方法。
使用处理蓝牙耳机集成的AVAudioSessionCategoryOptions
设置类别,声音默认为扬声器。
if (![[[AVAudioSession sharedInstance] category] isEqualToString:AVAudioSessionCategoryPlayAndRecord])
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:(AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionAllowBluetooth) error:&error];
NSLog(@"setCategory error = %@", error);
[[AVAudioSession sharedInstance] setActive:YES error:&error];
NSLog(@"setActive error = %@", error);
注意 - 我必须删除 AVAudioSessionModeVideoChat
模式设置方法,因为系统倾向于优化输入/输出系统资源,因此我的问题中提到了麦克风灵敏度问题。
到目前为止,我已经在 iPad mini 和 iPad 2 上进行了一些测试。仍然需要在 iPhone 上进行测试。
我希望这个答案能帮助别人,如果不是我的话!
【讨论】:
对我来说,这个选项 "AVAudioSessionCategoryOptionDefaultToSpeaker" 可以返回正常的音量值以上是关于将 AVAudioSession 模式设置为 AVAudioSessionModeVideoChat 时出现麦克风低语音录制问题的主要内容,如果未能解决你的问题,请参考以下文章