3

我有一个使用 WebRTC 和 mediasoup 服务器的网络摄像头聊天室应用程序(所以它是多对多视频共享)。

我遇到了一些问题,我的一些用户无法让传入的视频供稿正常工作。这是一个难题,因为我根本无法重现它,而且我不能轻易地“远程调试”这个问题,因为我的大多数用户都非常不懂技术。到目前为止,我唯一可以确定的是它似乎与网络相关,而不是与浏览器相关,因为我收到了来自使用 Firefox、Chrome、Safari 和 Edge 的人的错误报告。我在端口 443 上运行我的服务器(mediasoup v2),服务器盒上没有防火墙,因此应该使门尽可能宽。我只是不知道确切的问题是什么,所以我感觉在黑暗中。

所以,我正在尝试解决方案。我不认为(?)我设置了 TURN 服务器,但从我所读到的内容来看,添加一个服务器似乎肯定不会受到伤害,并且可以帮助解决我的情况。

我不完全理解整个 WebRTC 协议或 RFC 7118(这东西真的很复杂!)或者 TURN 服务器到底是什么/在哪里/如何适应更大的图景。这会有所帮助,对吧?很多谷歌搜索导致没有明确的答案。希望得到一些帮助!谢谢!

4

2 回答 2

2

WebRTC 尝试了它可以做的一切来建立 p2p 连接,但有时它会失败。轮机服务器作为最后的手段,以便对等方都可以通过轮机服务器进行连接。显然这不是一个 p2p 连接,所以会有额外的延迟,你必须确保你的轮流服务器有足够的带宽来覆盖你期望的所有连接。

TL;DR,如果你需要 100% 的连接率,你应该有一个转弯服务器。

我相信 AWS 有一个现成的实例,你可以启动,或者如果你可以使用这个开源 coturn 服务器https://github.com/coturn/coturn

在调试说明中...检查您的候选冰类型。如果你只有一个 STUN 服务器,你应该看到 host 和 srflx,但是如果你有一个 TURN 服务器,你也会看到中继。您可以通过丢弃具有 host 和 srflx 类型的候选冰来复制此问题。

于 2019-08-20T23:01:36.873 回答
2

我在端口 443 上运行我的服务器(mediasoup v2),服务器盒上没有防火墙,所以应该使门尽可能宽

那就是websocket。媒体流量通常通过 UDP 运行,mediasoup 使用随机端口。在某些情况下,在 udp 端口​​ 443 上配置的 TURN 服务器可能会有所帮助。另一个问题是 UDP 被阻止,这很容易用本地防火墙重现。Mediasoup 支持一种叫做 ice-tcp 的东西,它允许媒体通过 TCP 连接运行。您应该检查您的 mediasoup 安装是否使用 ice-tcp。如果没有,带有 TURN/TCP 的 TURN 服务器会有所帮助。

于 2019-08-21T09:08:42.267 回答