实现多用户直播的Webrtc有两个重要的方案:jitsi和mediasoup。
在pc/mobile web兼容性方面,两者表现差不多,都比owt,强许多。Owt是intel领导的MCU方案,https://github.com/open-webrtc-toolkit/owt-server。但这个owt的播放端做得确实烂!我都不拿owt出来做对比了。
先看一下jitsi和mediasoup两者的demo对比吧。Owt连个在线demo也没有,真的丢人!
用pc web来简单测一下,感觉都挺棒的。
这两个工程都是SFU方案,具体实现上有很大区别。
首先,Jitsi不提供C++ SDK,这意味着, 不方便实现桌面推流软件比如obs。
而mediasoup提供C++ SDK。
https://github.com/versatica/libmediasoupclient
其次,根据两个工程各自提供的性能测试数据来说。Mediasoup单CPU支持1000人/room。而jitsi在4 cpu服务器上支持1200人/room。性能上mediasoup是jitsi的3倍。
Jitsi Videobridge Performance Evaluation | Performance Testing
On a plain Xeon server (a quad-core Intel ® Xeon® E5-1620 v2 @ 3.70GHz CPU.), for about 20% CPU you will be able to run 1000+ video streams using an average of 550 Mbps!
https://desktop.jitsi.org/wiki/pub/jvb-eval-graph1-1000streams.png
https://github.com/versatica/mediasoup/blob/v3/doc/Charts.md
mediasoup v2 (a room uses a single media worker subprocess by design, so a single CPU).
Charts provided by CoSMo team.
Scenario:
1 peer producing audio and video tracks.
N spy peers receiving them.
mediasoup/mediasoup_SFU_BW_out.png at v3 · versatica/mediasoup · GitHub
jitsi较mediasoup来说,复杂了许多。关键原因是jitsi是作为独立服务来考虑的,而且有jitri这个合流转RTMP的方案。Mediasoup就只做为一个node.js的模块,这样启动服务什么的,以及进一步开发应用,都由使用者在node.js框架下来完成,简洁了许多。合流的方案,本来就是独立的功能模块。最好是由主播端来完成合流,再通过RTMP推出去。当然,这样C++ SDK就显得很重要了。主播端,最好就是在obs基础上进行二次开发。
Qq交流: 点击链接加入群聊【流媒体webrtc】:正在跳转