android - Android 上的回声消除功能不起作用

标签 android webrtc webrtc-android

我们正在尝试启用已经实现的回声消除技术。

场景:

两台 Android 设备已成功连接,并且两台设备上的语音均完全正常。

Device-1 激活/停用扬声器:

AudioManager audioManager = ((AudioManager) getSystemService(AUDIO_SERVICE));
audioManager.setSpeakerphoneOn(false);

Device-2 在说话时听到自己的声音(面临此问题)

任何帮助或指导将不胜感激。

最佳答案

在我的基于 WebRTC 的 Cordova 移动应用程序上测试视频通话时,我一直在努力解决 Android 上的回声消除问题。不过,在包括 IOS 在内的大多数移动设备上都没有出现回声问题,但在 Samsung-S10 和 Nokia 设备上却出现了回声问题。

我还假设 WebRTC 支持音频约束“echoCancellation:true”,默认情况下启用该约束。然而,这种音频限制似乎不起作用。

我通过在 AudioManager 中设置模式来修复它

AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
audioManager.setSpeakerphoneOn(true);

看起来某些移动设备在将音频模式明确设置为“通信”之前不会启动回声消除(即使支持)。

关于android - Android 上的回声消除功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56429987/

相关文章:

android webRTC接收没有音频的调用

具有共享 View 模型的 Android 导航组件

android - 查询解析用户

webrtc - 如何使用webrtcbin创建offer,只接收视频

google-chrome - 始终接受 webRTC 网络摄像头请求

Webrtc Android DTMF 支持

android - "Optimizing"在Android中访问游标 : Position vs Column names

java - 如何为 Android 应用程序创建标题屏幕?例如。当应用程序像 Facebook 一样加载时

android - QuickBlox - 来自不同位置/设备的相同用户登录

java - 如何将本地视频流发送到服务器?