根据AVAudioSessionModeVideoChat
-
当使用此模式时,设备的音调均衡会针对语音进行优化,并且允许的音频路由集将减少到仅适用于视频聊天的那些。
因此系统会降低适合此模式的音频输出和输入路径的默认灵敏度。
我正在使用setMode到AVAudioSessionModeVideoChat
,以便app / system能够动态识别并适应硬件集成(有线和蓝牙耳机)。但是,似乎将此模式设置为视频聊天会大大降低内置麦克风的灵敏度,从而以低音调录制声音。我的目标应用用户主要是在嘈杂的氛围中。
有没有办法将输入和输出灵敏度提高到最大值并同时利用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
使用内置扬声器和麦克风的设备进行测试。
答案 0 :(得分:3)
以下是适用于我的应用目标用户的可能替代解决方案/方法之一。
使用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上进行测试。
我希望这个答案对某人有帮助,如果不是我!!