基于Linphone Android SDK的VOIP通话回声问题排查求助
Linphone Android SDK 开发VOIP通话回声问题求助
环境信息
- 设备:Hotwav R8平板(Unisoc八核芯片、4GB内存)
- 系统:Android 14(API 34)
- Linphone SDK版本:5.4.5
已尝试的解决方法
- 使用Android AudioManager处理回声,无效果
- 调用Linphone core.config设置回声相关参数、调整麦克风增益至
0.01f,均无变化;仅能关闭麦克风,无法修改增益 - 将配置代码放在
Call.State.StreamsRunning回调中,确保通话启动时生效,但日志显示代码执行后麦克风增益仍未改变
测试情况
- 平板发起通话,被叫方静音后,10英尺外声音仍被平板麦克风拾取,被叫方音量无变化
- 关闭平板麦克风后回声消失,无声音传输
- 被叫方在30英尺外(平板无拾音可能)时,仍出现回声
- 封住平板两个麦克风及扬声器后,被叫方听不到平板声音但回声仍存在,且被叫设备靠近平板时仍会触发反馈回路
- Logcat无报错信息
已投入3个月适配该硬件开发门禁定制软件,希望找到软件解决方案而非更换设备。相关配置代码如下:
fun start ///////////////////\ // --- THE FIX FOR MANUAL GAIN CONTROL --- // We MUST disable system processing for the 'mic_gain' config to be respected. config.setBool("sound", "android_audio_processing_allowed", false) // Because we disabled hardware processing, we enable Linphone's software AEC config.setBool("sound", "echo_cancellation", true) config.setBool("sound", "echo_limiter", true) // Now the 0.01 setting will actually be applied by the SDK's software mixer config.setBool("sound", "agc", false) config.setFloat("sound", "mic_gain", 0.01f) config.setFloat("sound", "playback_gain", 1.0f) config.setString("sound", "audio_backend", "opensles") config.setInt("sound", "android_stream", 0) /////////////////\ Call.State.StreamsRunning -> { _callState.value = CallStatus.Connected audioManager.mode = AudioManager.MODE_IN_COMMUNICATION setSpeakerphoneOn(audioManager, true) val maxVol = audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL) core.activateAudioSession(true) //linphone core.isMicEnabled = true //linphone core.config.setFloat("sound", "echo_cancellation", 1f)//linphone core.config.setFloat("sound", "mic_gain", 0.01f)//linphone Log.i("[SipCallManager]", "Call connected. Software AEC and 0.01 Mic Gain forced.") }
内容的提问来源于stack exchange,提问作者Monica Martino




