android - WebRTC 安卓 : sound from phone speaker is going into conference through phone mic and causing echo

标签 android webrtc microphone webrtc-android

在某些移动设备(如 Motorola One Power - Android 10、Redmi Note 5 Pro - Android 7.1.2)中,来自手机扬声器的声音通过手机麦克风进入 session 并引起回声。仅当电话扬声器处于开启状态时才会出现此回声问题。

我使用了 AudioManager 的 MODE_IN_COMMUNICATION 模式:

mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);

此外,使用 PeerConnectionFactory 的 createAudioSource() API 在以下音频约束下创建音频源:
audioConstraints = new MediaConstraints();
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googEchoCancellation", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googAutoGainControl", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googHighpassFilter", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googNoiseSuppression", "true"));

解决问题的任何帮助或指导将不胜感激。

最佳答案

有些手机无法进行硬件回声消除,即使他们宣传它是可用的。红米Note 5绝对是其中之一,看看https://github.com/signalapp/Signal-Android/blob/master/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java ,搜索 HARDWARE_AEC_BLACKLIST。
因此,要启用 WebRTC AEC,请使用 JavaAudioDeviceModule.class 的以下方法

setUseHardwareAcousticEchoCanceler(false)       
setUseHardwareNoiseSuppressor(false) 
(作为引用,请查看 PeerConnectionClient.java 的 createJavaAudioDevice() - Checkout official android example on googlesource.com

关于android - WebRTC 安卓 : sound from phone speaker is going into conference through phone mic and causing echo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62449470/

相关文章:

android - 以编程方式在android中的软输入键盘上禁用语音到文本按钮(麦克风)

java - 在 Android Q 之前可以获取带有相册的图像,但在 Android Q 上则不行

java - Android Studio 应用程序在打开第二个 Activity 时崩溃

audio - 如何通过对等连接在浏览器之间播放和可视化音频流?

android - 从麦克风获取的语音音量任意降低(Android、OpenSLES)

c# - 如何检查麦克风是否可用于录音

java.net.BindException : bind failed: EACCES (Permission denied) TCP Server

android - 如何使用异步任务来控制 View 寻呼机

android - 我如何知道 Webrtc 修订版和版本号?

html - 保存通过 webrtc peerConnection 创建的视频/ Audio Session