websocket - 一对多直播视频流:WebRTC 还是 Websocket?
问题描述
我将创建一个网站,一位管理员将他的实时网络摄像头流式传输到多个查看者。我花了几天时间在谷歌上搜索 WebRTC 和 Websocket 解决方案,但仍然感到困惑。人们说 WebRTC 是唯一理智的方法,但是......
我从谷歌得到的,如果我错了,请纠正我:
WebRTC 主要用于 p2p 连接,这意味着我的“管理员”将无法拥有很多(比如 50 多个)观众——仅仅是因为他的 50M 互联网将开始滞后,试图一次流式传输 50x p2p;
我想处理来自管理员 _asap_but_before_ 的视频(即时处理!)向观众展示(即制作一些叠加层或将另一个视频嵌入到主视频中)——这是 p2p 的另一个问题,不是吗?
所以,在这一点上,我很确定我应该使用 Websockets 而不是 WebRTC。也许我错过了一些重要的东西?您能否为此建议我任何 NotExtremelyComplicated 解决方案?
谢谢
解决方案
你说的都是对的!如果您将 P2P 从管理员连接到所有观众,您可能会达到上限,因为您需要为每个观众上传。您要做的是改用 SFU。您还可以在服务器上进行处理/覆盖。
SFU 是位于中间的服务器,充当“中继器”,因此管理员只上传一次。拓扑看起来像
|----> Viewer
|
Admin ---> SFU |----> Viewer
|
|----> Viewer
有很多 SFU 实现,每个都有自己的起伏。如果您对Pion WebRTC有任何疑问,我很乐意为您提供帮助。它是 WebRTC 的 Go 实现,我们有一个如何构建最小 sfu的示例。
您也可以通过 Websockets 构建它,但您可能会遇到延迟问题。我自己没有做过,但我相信通过 MSE API 是可能的。
WebRTC 的好处是您可以获得双向媒体和数据,而且您无需进行太多编码。然后在 WebRTC 之上还有一些不错的东西,比如拥塞控制(WebRTC 会缩小/增加比特率以适应您的可用带宽)。虽然使用 Websockets 处理这样的事情要困难得多。
推荐阅读
- r - Adding geom_text from different data frame to facets
- python - 如何在迭代之间建立时间缓冲
- c# - 在本地方法中返回列表(C#)
- python - 在脚本的所有数据帧上错误添加的变量 - Python 3
- javascript - 如何让我的 selenium-standalone 启动 - selenium-standalone start
- sql - Rails - ActiveRecord 在嵌套路由中有多个条件
- batch-file - 为什么我的批处理文件总是执行 IF 条件的 ELSE 分支?
- excel - 当用户更改单元格值时需要评论或注释
- java - 在里面创建一个带有mac地址的字符串
- mysql - Getting resulting data in one row from 3 select queries