说明
我使用的是 pjsip 包装器,它可以正常工作一段时间。我们最近观察到一个问题,当客户切换到扬声器时,声音通常会变得很毛刺8秒,其他人无法理解质量。我深入研究了库代码,它使用了 AVAudioSessionCategoryPlayAndRecord
,下面的代码中的一切似乎都很好:
- (VSLAudioControllerOutputs)output { AVAudioSessionRouteDescription *route = [[AVAudioSession sharedInstance] currentRoute]; for (AVAudioSessionPortDescription *output in route.outputs) { if ([output.portType isEqualToString:AVAudioSessionPortBluetoothHFP]) { return VSLAudioControllerOutputBluetooth; } else if ([output.portType isEqualToString:AVAudioSessionPortBuiltInSpeaker]) { return VSLAudioControllerOutputSpeaker; } } return VSLAudioControllerOutputOther; }
我已经尝试了 pjsip 库中的所有 pjmedia_echo_flag
,结果完全没有影响。
预期行为 它应该平滑地切换到扬声器,反之亦然
实际行为 对方听到的声音很乱,什么都听不懂,切换后就这样保持了8秒
堆栈跟踪/错误消息 不,已经观察到
相同的后端在我们的 Android 客户端上完美运行。