You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

基于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

火山引擎 最新活动