Div*_*egi 11 debugging android echo webrtc
我一直在使用libjingle在四个用户之间建立对等连接以共享数据并启动音频通道.大部分时间都可以正常工作,但是有一个用户的回声问题,这使得呼叫非常不稳定并且很难听取用户的意见.
我试过添加
this.mediaConstraints.optional.add(new MediaConstraints.KeyValuePair("googNoiseSuppression", "true"));
this.mediaConstraints.optional.add(new MediaConstraints.KeyValuePair("googEchoCancellation", "true"));
Run Code Online (Sandbox Code Playgroud)
我在可选参数中添加这些约束,以防我在强制中添加它们断开调用并抛出onRenegotiationNeeded方法.
我列举了一些案例,例如:
1)这可能是1个用户处于扬声器(或耳机足够大)的原因,语音在麦克风中注册并产生回声.(但有时它也没有这个原因)
2)可能有1个音频通道注册两次,并创建一个混响效果,同一用户发送两次数据通道.(无法找到如何调试,我计算音频通道,它们是正常的)
3)两个用户在同一个房间并且发生回声(这是正常情况发生但不是一个问题,因为它不可避免)
我正在寻找建议或解决方案,以防其他人遇到Android webRTC库的此类问题.
implementation 'io.pristine:libjingle:9694@aar'
Run Code Online (Sandbox Code Playgroud)
我起诉的图书馆是这样的,但我也发现最近的webRTC官方图书馆最近更新了,会迁移到那个解决任何这样的问题吗?
我找到的最新图书馆是:
implementation 'org.webrtc:google-webrtc:1.0.22672'
Run Code Online (Sandbox Code Playgroud)
任何帮助将受到高度赞赏.
谢谢
较新版本的 WebRTC 具有WebRtcAudioUtils可用于基于 WebRTC 的声学回声消除 (AEC) 的类。
在这里您有两种选择,您可以使用内置 AEC 或基于 WebRTC 的 AEC。
//Disable built-in AEC even if device doesn't supports it
WebRtcAudioUtils.setWebRtcBasedAcousticEchoCanceler(true);
Run Code Online (Sandbox Code Playgroud)
或者
//Enable built-in AEC if device supports it"
WebRtcAudioUtils.setWebRtcBasedAcousticEchoCanceler(false);
Run Code Online (Sandbox Code Playgroud)
我认为 pristine 不再维护 android WebRTC 库了。因此,我建议您使用由 Google 托管的新 WebRTC 库,因为许多错误修复仅在撰写本文时 Google 托管的 WebRTC 库的新版本中可用
implementation 'org.webrtc:google-webrtc:1.0.22920'
Run Code Online (Sandbox Code Playgroud)
我很难将基于原始的 WebRTC 项目迁移到基于 Google 的 WebRTC 库,因为许多类已被弃用,其中一些甚至不在较新版本的 WebRTC 中。您可以查看我的 GitHub 项目,该项目是AppRTC的客户端,我在其中使用了来自 Google 的 WebRTC 预构建库或googlesource.com 上的Checkout官方 android 示例。在PeerConnectionClient课堂上,他们还使用WebRtcAudioUtils切换回声以及噪声、高通滤波器等。
| 归档时间: |
|
| 查看次数: |
1471 次 |
| 最近记录: |