video-streaming - 使用转向服务器作为中继使延迟很高
问题描述
你可能知道,webrtc 说是点对点的。但这是真的,当双方可以看到对方并在网络内部进行通信时,这并不是一直都能实现的(因为 NAT 和防火墙)。所以在这些场景中,STUN 服务器是没有用的,应该使用 TURN 服务器。TURN 服务器过去用作中继,将每个对等点相互连接。
但是随着连接的建立,通过 TURN 的性质,延迟会上升。这可能是一个很高的值(对我来说是 5-10 秒),它会破坏视频通话的用户体验。
我正在使用 coturn,它是最著名的开源 TURN 服务器之一。
第一个问题是,有没有办法减少 TURN 服务器造成的这种延迟?例如,使用具有较低 ping 时间的服务器可能是更好的选择,而不是具有高价值的服务器?硬件是否至关重要,提高 CPU 功率和 RAM 可以减少延迟?
第二个更重要的问题是,我可以在我的客户区做些什么来模糊这种延迟?我的意思是,是否有任何解决方案(例如基于 UX)来减少延迟的影响?
感谢您的任何回复。
解决方案
增加 5-10 秒延迟的 TURN 中继肯定是不寻常的。这通常应该只多 50ms-100ms。然而,这在很大程度上取决于 TURN 服务器的位置。如果您在澳大利亚有两个用户在爱尔兰使用 TURN 服务器,那将是一个糟糕的体验。
大多数大型 TURN 部署使用基于 geodns 的路由来选择靠近用户的 TURN 服务器,这是可以做出的最具影响力的更改。
推荐阅读
- unicode - 如何在 Jekyll 代码高亮中使用 unicode?
- c# - 删除注册表似乎没有生效
- scala - 如何将左折叠运算符“:/”转换为scala中的foldLeft函数?
- angular - Angular 7 Http Post Request - 订阅仅捕获 OPTIONS 响应而不是实际响应
- docker - 加载共享库时出错:libstdc++.so.6:无法打开共享对象文件:没有这样的文件或目录
- javafx - 为什么 ObservableList 有下划线?
- javascript - Onmouse hover effect with text description
- android - 尝试模拟应用程序时出现 Java.Lang.RunTimeException 错误
- dart - 从另一个文件调用对象
- javascript - 返回对象数组的 DOM 值