JumpingYang001 / webrtc

webrtc source code from https://chromium.googlesource.com/external/webrtc
BSD 3-Clause "New" or "Revised" License
369 stars 284 forks source link

WebRTC回声消除 #4

Open tc214 opened 6 years ago

tc214 commented 6 years ago

前辈,你好! 最近试用了WebRTC Android的视频通话demo,音频回声比较大,还有啸叫,我想进行回声消除,听说WebRTC自带回声消除功能,是不是还需要写回声消除的JNI接口,然后重新编译库呢? 或者单独编译音频模块出来使用? 感谢!

JumpingYang001 commented 6 years ago

WebRTC项目非常相互关联。 最好的解决方案是使用他们的GN构建系统为Android构建整个项目(您需要一台Linux机器),这会产生一个libwebrtc.a库。

然后你需要在AudioProcessing模块上编写一个JNI包装器(https://chromium.googlesource.com/external/webrtc/+/master/webrtc/modules/audio_processing/include/audio_processing.h)。

这里有两个很旧的例子: https://github.com/thepacific/webrtc-android-jni https://github.com/DoubangoTelecom/webrtc-audioproc

另外一种途径: https://stackoverflow.com/a/50172177 “Somesh Kumar”的答案: https://github.com/someshkumar049/AndroidWebRTCGradle https://appr.tc/ https://chromium.googlesource.com/external/webrtc/+/master/examples/androidapp/src/org/appspot/apprtc 较新版本的WebRTC具有WebRtcAudioUtils类,您可以将其用于基于WebRTC的声学回声消除(AEC)。

在这里您有两种选择,您可以使用内置的AEC或基于WebRTC的AEC。

//即使设备支持,也禁用内置的AEC WebRtcAudioUtils.setWebRtcBasedAcousticEchoCanceler(true); 要么

//如果设备支持,则启用内置的AEC“  WebRtcAudioUtils.setWebRtcBasedAcousticEchoCanceler(false); 我认为原始不再维护android WebRTC库。因此,我建议您使用由Google托管的新WebRTC库,因为许多错误修复仅在新版本的Google托管的WebRTC库中可用,这些库在撰写本文时是

实施'org.webrtc:google-webrtc:1.0.22920' 我很难将基于原始WebRTC项目迁移到基于Web的WebRTC库,因为许多类都被弃用,其中一些类甚至不在新版本的WebRTC中。您可以检查我的GitHub项目,该项目是AppRTC的客户端,我使用Google的WebRTC预建库或googlesource.com上的Checkout官方Android示例。在PeerConnectionClient类中,他们还使用WebRtcAudioUtils来切换Echo以及Noice,高通滤波器等。

24929 commented 5 years ago

@JumpingYang001 iOS端连麦在同一个房间内测试的时候:啸叫不是十分严重,先放在说话者的嘴边 然后拉开一定距离(大概三四十公分)说话声音立马就下去了,然后会随着啸叫声音的增大而增大。这种情况正常么?如果不正常该怎么解决?

1638253187 commented 4 years ago

WebRTC项目非常相互关联。 最好的解决方案是使用他们的GN构建系统为Android构建整个项目(您需要一台Linux机器),这会产生一个libwebrtc.a库。

然后你需要在AudioProcessing模块上编写一个JNI包装器(https://chromium.googlesource.com/external/webrtc/+/master/webrtc/modules/audio_processing/include/audio_processing.h)。

这里有两个很旧的例子: https://github.com/thepacific/webrtc-android-jni https://github.com/DoubangoTelecom/webrtc-audioproc

另外一种途径: https://stackoverflow.com/a/50172177 “Somesh Kumar”的答案: https://github.com/someshkumar049/AndroidWebRTCGradle https://appr.tc/ https://chromium.googlesource.com/external/webrtc/+/master/examples/androidapp/src/org/appspot/apprtc 较新版本的WebRTC具有WebRtcAudioUtils类,您可以将其用于基于WebRTC的声学回声消除(AEC)。

在这里您有两种选择,您可以使用内置的AEC或基于WebRTC的AEC。

//即使设备支持,也禁用内置的AEC WebRtcAudioUtils.setWebRtcBasedAcousticEchoCanceler(true); 要么

//如果设备支持,则启用内置的AEC“  WebRtcAudioUtils.setWebRtcBasedAcousticEchoCanceler(false); 我认为原始不再维护android WebRTC库。因此,我建议您使用由Google托管的新WebRTC库,因为许多错误修复仅在新版本的Google托管的WebRTC库中可用,这些库在撰写本文时是

实施'org.webrtc:google-webrtc:1.0.22920' 我很难将基于原始WebRTC项目迁移到基于Web的WebRTC库,因为许多类都被弃用,其中一些类甚至不在新版本的WebRTC中。您可以检查我的GitHub项目,该项目是AppRTC的客户端,我使用Google的WebRTC预建库或googlesource.com上的Checkout官方Android示例。在PeerConnectionClient类中,他们还使用WebRtcAudioUtils来切换Echo以及Noice,高通滤波器等。

您好,请问您有关于实时回音消除的方法与demo嘛?方便可以加我的QQ详聊嘛? 1638253187