WebRTC Android 回声消除
WebRTC Android echo cancellation
我想在android中实现语音和视频通话。我使用这个示例项目作为参考:Amazon Kinesis Video Streams Android WebRTC SDK
问题是麦克风会拾取远程声音,从而导致极端的回声效果。
我们使用这个版本:
org.webrtc:google-webrtc:1.0.30039
AudioManager 处于此模式:
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
audioManager.setSpeakerphoneOn(false);
这是我们尝试过但没有任何效果的方法:
WebRtcAudioUtils.setWebRtcBasedAcousticEchoCanceler(true);
WebRtcAudioUtils.useWebRtcBasedAcousticEchoCanceler();
WebRtcAudioUtils.setWebRtcBasedAutomaticGainControl(true);
WebRtcAudioUtils.useWebRtcBasedAutomaticGainControl();
WebRtcAudioUtils.setWebRtcBasedNoiseSuppressor(true);
WebRtcAudioUtils.useWebRtcBasedNoiseSuppressor();
WebRtcAudioManager.setBlacklistDeviceForOpenSLESUsage(true);
还有这个:
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googEchoCancellation", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googEchoCancellation2", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googDAEchoCancellation", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googTypingNoiseDetection", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googAutoGainControl", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googAutoGainControl2", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googNoiseSuppression", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googNoiseSuppression2", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googAudioMirroring", "false"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googHighpassFilter", "true"));
我真的迷路了。如何在 android 中激活回声消除?
使用下面JavaAudioDeviceModule.class
的方法
setUseHardwareAcousticEchoCanceler(false)
setUseHardwareNoiseSuppressor(false)
(作为参考,请查看 PeerConnectionClient.java 的 createJavaAudioDevice() - Checkout official android example on googlesource.com
您还可以查看 Somesh (https://github.com/TheSomeshKumar/AndroidWebRTCGradle) 的 GitHub 项目。
我想在android中实现语音和视频通话。我使用这个示例项目作为参考:Amazon Kinesis Video Streams Android WebRTC SDK 问题是麦克风会拾取远程声音,从而导致极端的回声效果。 我们使用这个版本:
org.webrtc:google-webrtc:1.0.30039
AudioManager 处于此模式:
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
audioManager.setSpeakerphoneOn(false);
这是我们尝试过但没有任何效果的方法:
WebRtcAudioUtils.setWebRtcBasedAcousticEchoCanceler(true);
WebRtcAudioUtils.useWebRtcBasedAcousticEchoCanceler();
WebRtcAudioUtils.setWebRtcBasedAutomaticGainControl(true);
WebRtcAudioUtils.useWebRtcBasedAutomaticGainControl();
WebRtcAudioUtils.setWebRtcBasedNoiseSuppressor(true);
WebRtcAudioUtils.useWebRtcBasedNoiseSuppressor();
WebRtcAudioManager.setBlacklistDeviceForOpenSLESUsage(true);
还有这个:
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googEchoCancellation", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googEchoCancellation2", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googDAEchoCancellation", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googTypingNoiseDetection", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googAutoGainControl", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googAutoGainControl2", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googNoiseSuppression", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googNoiseSuppression2", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googAudioMirroring", "false"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googHighpassFilter", "true"));
我真的迷路了。如何在 android 中激活回声消除?
使用下面JavaAudioDeviceModule.class
的方法setUseHardwareAcousticEchoCanceler(false)
setUseHardwareNoiseSuppressor(false)
(作为参考,请查看 PeerConnectionClient.java 的 createJavaAudioDevice() - Checkout official android example on googlesource.com 您还可以查看 Somesh (https://github.com/TheSomeshKumar/AndroidWebRTCGradle) 的 GitHub 项目。