首页 > 解决方案 > 一对多直播视频流:WebRTC 还是 Websocket?

问题描述

我将创建一个网站,一位管理员将他的实时网络摄像头流式传输到多个查看者。我花了几天时间在谷歌上搜索 WebRTC 和 Websocket 解决方案,但仍然感到困惑。人们说 WebRTC 是唯一理智的方法,但是......

我从谷歌得到的,如果我错了,请纠正我:

  1. WebRTC 主要用于 p2p 连接,这意味着我的“管理员”将无法拥有很多(比如 50 多个)观众——仅仅是因为他的 50M 互联网将开始滞后,试图一次流式传输 50x p2p;

  2. 我想处理来自管理员 _asap_but_before_ 的视频(即时处理!)向观众展示(即制作一些叠加层或将另一个视频嵌入到主视频中)——这是 p2p 的另一个问题,不是吗?

所以,在这一点上,我很确定我应该使用 Websockets 而不是 WebRTC。也许我错过了一些重要的东西?您能否为此建议我任何 NotExtremelyComplicated 解决方案?

谢谢

标签: websocketstreamingwebrtclive

解决方案


你说的都是对的!如果您将 P2P 从管理员连接到所有观众,您可能会达到上限,因为您需要为每个观众上传。您要做的是改用 SFU。您还可以在服务器上进行处理/覆盖。

SFU 是位于中间的服务器,充当“中继器”,因此管理员只上传一次。拓扑看起来像

               |----> Viewer
               |
Admin ---> SFU |----> Viewer
               |
               |----> Viewer

有很多 SFU 实现,每个都有自己的起伏。如果您对Pion WebRTC有任何疑问,我很乐意为您提供帮助。它是 WebRTC 的 Go 实现,我们有一个如何构建最小 sfu的示例。


您也可以通过 Websockets 构建它,但您可能会遇到延迟问题。我自己没有做过,但我相信通过 MSE API 是可能的。

WebRTC 的好处是您可以获得双向媒体和数据,而且您无需进行太多编码。然后在 WebRTC 之上还有一些不错的东西,比如拥塞控制(WebRTC 会缩小/增加比特率以适应您的可用带宽)。虽然使用 Websockets 处理这样的事情要困难得多。


推荐阅读