2020年的Server WebRTC-功能概述

1.谁需要服务器端WebRTC?



众所周知,WebRTC是一种点对点技术,它实现了两个浏览器之间的通信通道,以低延迟地传输音频,视频和任何其他数据。该技术是完全免费的,并且如果您的应用程序需要在浏览器中为两个远程参与者建立通信,则可以在网页上添加适当的javascript代码,从而解决了问题。浏览器将直接通信,不需要服务器。



当需要两个以上的参与者时,服务器端WebRTC就会进入现场,并且来自一个参与者的数据会立即传输到其他几个参与者。



在这种情况下,参与者中的一个可以是服务器,该服务器将与第一个参与者建立一对一通信,从他那里接收数据,然后也以

一对一的方式与其他参与者建立通信,并将这些数据发送给他们。那些。服务器拥有许多对等通信通道,只需将数据复制到所有这些通道。在WebRTC术语中,这样的服务器充当选择性转发单元(SFU)。



图片



但是,不仅可以通过SFU进行组通信。您可能会问,如果没有任何服务器,为什么每个人都无法将数据发送给每个人,那么您将绝对正确。这称为MESH-通讯。



这里有两个关键点:



  1. 在MESH方案中,每个参与者发送和接收N-1个数据流,其中N是组大小。那些。随着小组的增加,MESH计划中每个参与者的上传速度要求也随之提高。而在SFU方案中,每个参与者始终仅发送一个流。并非每个参与者都有可以处理发送N-1流的网络连接速度。
  2. , MESH - . , , - . MESH , , VP8/VP9/H264 4 . WebRTC – , . , (PeerConnection). , 720p 30% , . .


由于这两个关键点,MESH方案在参与者数量增加的情况下实施效果不佳,必须使用SFU方案。



因此,在有大量通信参与者的情况下,需要服务器(SFU)。

让我们给出需要服务器的此类应用程序的示例:



  • 具有许多参与者的视频会议(每个人都喜欢的Zoom都使用WebRTC服务器,就像所有类似的服务一样)。
  • 实时视频监视,当视频从一台摄像机发送到多个查看器和录制设备时。安全系统,监控。
  • 交互式系统,例如:需要低音频/视频延迟的在线拍卖,教育和其他Web应用程序。


2.如果您仍然需要服务器端WebRTC,到2020年可以使用什么?



云服务还是您自己?



首先,在这里,通常的IT论点支持一个或另一个:云将提供并节省服务器,配置和可伸缩性的IT成本。但是,靠自己,如果一切顺利(没有保证),它将便宜很多。毕竟,您需要每月为云服务付费。



现在针对上述应用程序特定的参数。如果您在不同的国家和地区拥有庞大的全球受众,那么您将很难将所有内容放在一起。例如,云服务适合苏富比拍卖。但是,如果您在不同城市有2-3家公司分支机构,用户数为200-500,并且需要为其组织一次网络研讨会/会议/培训等,那么您可以自己在AWS或类似的托管平台上租用多台服务器,然后在此处安装软件WebRTC服务器,一切都会正常进行。如果Internet连接的速度允许,服务器甚至可能在您的公司中。好吧,对于所有较小规模的解决方案,一切都可以自己完成。



目前,两个云WebRTC服务已广为人知并经过测试:MillicastPhenix... 两者都具有全球覆盖范围,并且在不同大洲的服务器之间具有良好的连接性(您需要吗?),并且实际上是视频延迟(延迟)不到半秒。



现在,让我们谈谈“我们自己”。



您将在此处需要WebRTC服务器软件。有3种获得这种服务器的方法。



  1. 使用开放的API自行制作。其中最著名的是Google c ++ WebRTC API您还可以使用GStreamer APIGo中一个有趣的实现:Pion WebRTC您将需要熟练的c ++程序员以及大量的耐心和时间进行调试。我在上一篇文章中详细介绍了此方法的困难
  2. . Ant Media Server, Kurento, Janus, Jitsi. , , , . github , . , , , . , c++ . . , .
  3. . , , . Red5 Pro, Flashphoner Unreal Media Server.


WebRTC .



这是最有问题的话题。假设您的公司发布的软件产品中需要实现WebRTC服务器。让它成为机场航站楼,火车站,交通枢纽的视频记录和监视系统。或者具有已经存在的用于从内窥镜广播和记录视频的随附软件的医疗设备,在将视频广播到浏览器之前需要对其进行扩展。或飞行模拟系统,其中有必要在浏览器中实现可视化和/或与远程用户进行交互的可能性。我们不断面临类似的要求。您现有的系统有很多限制。互联网访问可能不可用。没有云。您无法在服务器上打开端口。仅Windows或仅Linux。有时甚至仅是特定版本的Windows,因为现有产品已经为此进行了改进。 WebRTC服务器,必须为所有这些限制调整添加到此类系统中的内容。



在这里,您可能别无选择,只能选择一个开源服务器(如Ant Media ServerJanus)进行更改。在Linux上就是这种情况。对于Windows,虚幻媒体服务器合适的-这是仅针对Windows OS编写和优化的软件。



WebRTC服务器非常占用资源



规划资源时,请记住这一点。我在上一篇文章中描述了这种资源密集型的原因,但结论是可伸缩性是通过非常强大的处理器或添加物理服务器来实现的。



这是使用Unreal Media Server v13.0在AWS EC2 m4.2xlarge实例上执行的测试图:Intel Xeon 8核心CPU E5-2686 v4 @ 2.30 GHz,32 Gb RAM,Windows Server2016。



图片



从该图可以看到,同时具有1000个Web播放器对于此IP摄像机,使用RTMP协议的处理器负载为5%,而使用WebRTC协议的处理器负载为75%,即 WebRTC的资源密集度是RTMP的十倍以上。