
什么是WebRTC?
作为谷歌在2011年发布的一个开源项目,WebRTC在网络浏览器和移动应用程序之间提供基于API的通信,包括音频、视频和数据的传输。消除了对本地插件和应用程序安装的需要,使这些连接对用户友好,并得到所有主要浏览器和移动操作系统的支持。
在过去的几年里,WebRTC在科技界的应用已经急剧增长。Facebook、亚马逊和谷歌是实施WebRTC的重要技术公司之一,使他们的网络应用更快、更可靠、更安全。
WebRTC功能也在现成的解决方案中提供,可以很容易地与其他软件集成。一个很好的例子是OpenTok,一个用于实时通信的PaaS,由我们在前TokBox(现在的Vonage)的业务伙伴提供。我们在为客户提供的许多解决方案中成功地使用了它,包括一个基于生物识别技术的高级认证服务。
正如在摘要中已经提到的,WebRTC的关键特征是它是简单而复杂的技术。简单的本质归结为易于实施。使用五到十行代码来组织两个浏览器之间的点对点视频通信就足够了。该技术的复杂性与WebRTC的特殊性有关,它必须适应不同的浏览器,而且如果它不能正常工作,也很难配置。另外,为了获得理想的结果,你应该了解STUN、TURN和NAT。
- STUN是一套标准化的方法,包括一个网络协议,用于在实时语音、视频、信息传递和其他互动通信的应用中穿越网络地址转换器(NAT)网关。我们为什么需要它?
- 当我们需要连接两个没有外部IP地址的浏览器时,STUN是必须的。两者都连接到服务器并找出它们的IP。浏览器通过这些端口交换它们之间的关系。
- TURN几乎做同样的事情。它通过自己发送流量。这个流量并没有被修改或以任何方式改变。这种方法允许我们在通过TCP(比UDP更可靠但更慢的协议)工作时连接两点。值得注意的是,如果没有TURN,大约15%的呼叫是无法进行的。
现在,你知道了什么是WebRTC,让我们投身于历史,了解该技术何时、如何出现,以及在哪些情况下可以使用。此外,我们还将概述该技术的优点和缺点,WebRTC解决方案的例子,以及高要求的WebRTC应用程序。默认情况下,这些应用是基于点对点通信的。如果我们需要组织群组通话和直播,就必须使用一个作为协议客户端运行的服务器。
WebRTC是如何工作的?
WebRTC的主要重点是在参与者之间提供实时音频和视频通信,参与者使用网络浏览器开始对话,相互定位,并绕过防火墙。
WebRTC利用JavaScript APIs和HTML5,被嵌入到浏览器中。WebRTC应用程序的典型特征如下。
- 发送和接收流媒体音频和视频。
- 检索网络配置数据,如IP地址、应用端口、防火墙和NAT(网络地址转换器),这是使用WebRTC API向另一个客户端发送和接收数据所需要的。
- 打开/关闭连接并报告错误。
- 传送媒体数据,例如,图像分辨率和视频编解码器
为了发送和接收数据流,WebRTC提供了以下API,可以在网络应用中使用。
- 用于音频和视频传输、加密和带宽配置的RTCPeerConnection
- 用于传输通用数据的RTCDataChannel
- 用于访问来自数码相机、网络摄像头、麦克风或共享桌面等设备的多媒体数据流的MediaStream
互联网工程任务组和网络实时通信工作组目前正在制定一套在软件中使用WebRTC的标准。
WebRTC的内涵
WebRTC主要只是一种在浏览器内发送和接收UDP包的方式。此外,WebRTC知道媒体的传输--包括音频和视频,而且它可以直接连接两个客户端--点对点。开发人员承认,在引擎盖下,WebRTC是一个相当简单的东西:打开UDP端口,知道合作伙伴的IP端口,用RTP包住流量。
让我们来谈谈从摄像头捕捉到屏幕上的视频播放之间发生了什么。这个过程包括7个基本步骤。
1.捕获摄像机的捕获
浏览器有一个API,允许我们要求用户访问摄像机或麦克风--navigator.getUserMedia => MediaStream。主要的困难是,我们不能立即将媒体流发送给对话者,因为它们在没有压缩的情况下重量很大。例如,一张640×480的BMP格式的图片重量为1.2Mb。每秒钟这样的图片的数量是30张。这意味着,一秒钟的视频重达36Mb。因此,比特率将是288 Mbps。数据必须经过压缩才能传输。因此,下一步--编码--是必须的。
2.编码
简单地说,编解码器允许压缩音频和视频流。有一套广泛的此类编解码器,其中一部分在WebRTC中可用。让我们以VP9为例。这种编解码器被用于在WebRTC中对图像进行编码。它可以传输分辨率为1280×720的图像,并对其进行压缩,使30个帧的重量达到1.5 Mbps。VP9如何做到这一点?
VP9不是不断地发送有关图像的信息,而是区分两个图像。我们在输出端得到主机,而其他间帧代表与主机的差异。帧中更多的动作意味着更多的图像权重。
在基础阶段,具有所有像素信息的关键帧被确定,而帧间表示与之前状态的差异。如果我们在帧间链中至少输了一次,我们就不能画出其他帧间。
3.RTP中的打包
数据在RTP-实时传输协议中被打包,它包含了关于包的顺序的信息。这是一个强制性的步骤,因为包可以以不同的顺序出现,甚至丢失。我们需要包的数量,以正确的顺序重现它们。此外,RTP还存储了关于时间的信息,允许音频和视频轨道的同步。RTP的其他细节有一个小的开销,大约是5%。
主协议有一个名为RTCP的扩展。它的作用是交换关于丢失包裹的信息和接收包裹的统计数据。
4.通过UDP的网络传输
数据是作为一个成型的UDP包被发送的。如果我们比较UDP和TCP,主要的优点是包之间的间隔最小。UDP有一些缺点:数据包丢失、延迟到达和以错误的顺序结束。
5.解开RTP的包装
在这个阶段,包的顺序被恢复了。视频流量被接收并传输到解码器。
6.解码
数据以正确的顺序被发送,在输出端,我们得到一个纯视频流--MediaStream。
7.在屏幕上绘图
我们将流附加到视频元素上,得到图像。在两个浏览器之间的点对点通信中,有时你会注意到视频被方块覆盖或冻结。原因是由不同问题引起的包的丢失。
- 随机丢失或网络丢失(简单地说,部分包被留在房子的墙壁里)
- 包裹可能被错误地丢掉(操作系统或网络设备的错误)
- 网络拥堵
为了实现稳定的视频通信,我们需要避开包裹丢失。四个主要的解决方案有助于实现它。
1.抖动缓冲器
我们渲染一个RTT之后。我们可以请求丢失的包。在大量丢失的情况下,由于有更多的时间来请求一个关键帧,所以楣会更短。这种方法的主要减分项是额外的持续延迟。
2.降低比特率
Bitrate = FPS * quality * resolution
我们可以通过改变其中任何一个参数来操纵比特率。
3.前向纠错
编解码器会重复一些数据。当数据被发送到客户端时,会有某些重复的数据。这些会加剧网络拥堵,但我们有更高的机会在第一时间交付内容。
4.网络调整
- 最佳的网络路线(我们可以设计网络,使其成为最佳路线,媒体服务器的选择是根据小坪数的原则)。
- 设置服务器和路由器。
WebRTC技术的优点和缺点
WebRTC的主要优点是:
- 有适用于所有平台的实施方案
- 使用现代音频和视频编解码器促进高质量的通信
- 安全和加密的DTLS和SRTP连接
- 有一个内置的内容抓取机制(桌面共享)
- P2P = 端到端加密
- 浏览器直接同意
- 基于HTML5和JavaScript的管理界面实施的灵活性
- 开源的
- 多功能性:只要浏览器支持WebRTC,基于标准的应用程序在任何操作系统上都能很好地工作
WebRTC有条件的缺点是其维护价格高,这与需要强大的服务器有关。
WebRTC的商业应用案例和实例
正如文章中已经提到的,网络实时通信的基础是视频聊天。带有音频和视频通话的服务,数据共享是涉及WebRTC技术的主要应用类型,最有名的例子是WhatsApp、Google Hangouts和Facebook Messenger。但是,如果我们把WebRTC的所有商业案例和例子拼凑在一起,我们可以发现有许多使用的领域。
该技术在远程医疗、监控和远程监测、在线教育、物联网、虚拟现实游戏、流媒体、带有语音通信的在线游戏、博彩、应急响应等方面的需求量很大。
MobiDev已经多次面临在不同的利基市场上应用WebRTC的需求。最引人注目的用例之一是通过共享AR和WebRTC进行远程协助。由于WebRTC的存在,这里组织了双向的连接。它被用于点对点通信,有助于避免服务器过载。该案例本身的本质可以归结为这样一个事实:用AR进行实时的双向通信有助于解决许多领域的援助任务。
最简单的例子是任何设备的维修和保养。在这种情况下,WebRTC应用开发与我们在增强现实技术方面的工作经验相结合。
WebRTC的未来:趋势和预测
根据市场研究报告,全球WebRTC市场的规模预计将在2026年达到165.705亿美元。让我们回顾一下,2016年,全球使用WebRTC的产品的市场价值为107亿美元。WebRTC的转折点出现在2017年,当时微软Edge和iOS Safari 11开始支持它。
就全球覆盖面而言,WebRTC市场横跨北美、欧洲、亚洲、中东、南美和非洲。由于容易获得高速互联网和大量的移动设备所有者,预计它仍将是主导地区。
如今,谷歌为网络实时通信的发展付出了巨大努力。因此,WebRTC的未来可以说是万里无云。通过评估谷歌在该技术上的投资,很容易验证这一点。所有的投资都是针对代码优化和功能集的扩展或改进。
2021-2022年,与WebRTC有关的主要趋势是。
- 被称为W3C标准的WebRTC将迅速发展。
- 由WebRTC提供的会议规模将增长,这影响了解决方案的复杂性。值得注意的是,会议中的1000个用户是一个真正的挑战,需要一个新的架构。
- 额外的工具,如背景模糊和噪音抑制,已经被开发出来,并将在未来得到改善,这些工具与Chrome中的WebRTC的实现有关。大流行引发了他们的热潮。
- 与用户隐私和应用安全有关的大量活动将被完成。
- 编解码器VP9和AV1将被现代化。
WebRTC的未来与新市场中技术的出现有关。此外,只要WebRTC是一个W3C标准,任何人都可以影响它的发展,这意味着巨大的前景。

