WebRTC 中继服务器 / 广播多个客户端

11

我已经实现了WebRTC点对点通信,但当我想将单个摄像头广播到多个客户端时,显然点对点通信就不适用了。

我找到了解决方案,例如:

但是第一个解决方案我无法设置(而且似乎存在跨浏览器问题), 第二个方案感觉就像我们用核武器打钉子一样过度了。

我只需要一个中继,不需要解码/重新编码流。

我只需要:

  • 广播者连接到服务器(点对点)

  • 客户端连接到服务器(点对点)

  • 服务器将广播者的流转发给客户端。

是否有任何软件提供我错过的此解决方案?还有哪些可行且可扩展的替代方案?

谢谢!


你有没有看过 Kurento 媒体服务器? - mido
4个回答

3

2
Jitsi唯一的问题是非常难以理解如何将现有的webrtc应用程序与jitsi视频桥接实现。 - RandallB

1
在您的服务器上,您可以运行Janus,通过RTP,您的广播者可以向其提供流。请查看配置文件示例。编写定义服务器如何从广播者接收流的配置文件后,您应该能够通过命令行界面工具在后台启动janus: $ janus --daemon --config=config_file.conf 另请参见流测试演示。注意:我没有彻底测试过这个功能。

我希望有人能够稍微解释一下这个问题。我觉得Janus接收WebRTC输入,然后重新处理它以进行广播,这样如果成千上万的人想观看您的广播,服务器会分发信息,而不是您的个人浏览器? - tbh__

0

如果您只想从一个对等端向一组对等端广播,而他们不关心延迟,最好的解决方案是将WebRTC转换为实时流,无需转码,只需混合:

Peer(Publisher) ---WebRTC--> Server --RTMP/HLS/DASH--> Peers/Players

如果这个方案对您有用,SRS 能够将 WebRTC 转换为直播流。
因为直播流允许使用 CDN 或 TCP 来传输流,并且延迟约为 3~5 秒,所以只有当Peers/Players不需要与Peer(Publisher)通信时才能使用此解决方案。
如果您希望所有这些对等方彼此交谈,那么这将非常复杂,并且需要一个 WebRTC SFU 集群来完成此操作,将会有大量的流。例如,如果允许 100 个对等方相互交谈,则将有 100x100 = 10k 条流。
这太过复杂了,所以我认为目前(2022.02)没有好的开源解决方案。

0

看一下this github-repo,它受到了muaz khan的WebRTC p2p scalable broadcast的启发。这在局域网上可以很好地工作。在互联网上,虽然我们正在改进它,但现在我不确定它能否很好地工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接