【问题标题】:One-To-Many live video strearming: WebRTC or Websocket?一对多直播视频流:WebRTC 还是 Websocket?
【发布时间】:2025-12-23 18:05:06
【问题描述】:

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

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

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

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

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

谢谢

【问题讨论】:

    标签: websocket streaming webrtc live


    【解决方案1】:

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

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

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

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


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

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

    【讨论】:

    • 哇,听起来不错。会深入研究它,非常感谢!
    • 当然!如果您有任何问题,随时乐意提供帮助。 WebRTC 是一项非常有趣的技术,但很难获得关于它的真实信息。