AVAudioSession模式设置为AVAudioSessionModeVideoChat时,麦克风低音录制问题

时间:2014-02-14 01:47:07

标签: ios avaudiorecorder avaudiosession

根据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

使用内置扬声器和麦克风的设备进行测试。

1 个答案:

答案 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上进行测试。

我希望这个答案对某人有帮助,如果不是我!!