abh*_*pta 7 android microphone webrtc webrtc-android
在某些移动设备(如摩托罗拉 One Power - Android 10、红米 Note 5 Pro - Android 7.1.2)中,手机扬声器的声音通过手机麦克风进入会议并产生回声。仅当电话扬声器处于开启状态时才会出现此回声问题。
我使用了 AudioManager 的 MODE_IN_COMMUNICATION 模式:
mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
Run Code Online (Sandbox Code Playgroud)
此外,在音频约束下使用 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"));
Run Code Online (Sandbox Code Playgroud)
任何解决问题的帮助或指导将不胜感激。
有些手机无法进行硬件回声消除,即使他们宣传它是可用的。红米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)
Run Code Online (Sandbox Code Playgroud)
(作为参考,请查看 PeerConnectionClient.java 的 createJavaAudioDevice() -在 googlesource.com 上查看官方 android 示例
| 归档时间: |
|
| 查看次数: |
1059 次 |
| 最近记录: |