WebRTC对您意味着什么

2021-02-06 20:05:03

如果我告诉您,两周前IETF和W3C终于发布了WebRTC标准,您的回答可能是问所有这些缩写词是什么。请仔细阅读,找出答案!

广泛可用的高质量视频会议是Internet的真正成功之一。视频会议的想法当然很古老(2001年观看海伍德·弗洛伊德(Heywood Floyd)在Bell视频电话上与家人进行视频通话的场景),但是直到最近,它才需要专用设备或至少下载专用软件。简而言之,WebRTC是Web浏览器中的视频会议(VC),无需下载:您只需访问网站并拨打电话即可。大多数主要的VC服务都具有WebRTC版本:这包括Google Meet,Cisco WebEx和Microsoft Teams,以及一大堆较小的播放器。

WebRTC并不是完整的视频会议系统;它是浏览器中内置的一组工具,可以处理构建VC系统的许多艰巨任务,因此您不必这样做。这包括:

从计算机的麦克风和摄像头捕获音频和视频。这也包括所谓的回声消除:即使希望人们不戴耳机也可以(希望)消除回声。

允许两个端点协商其功能(例如,“我想使用AV1编解码器以1080p发送和接收视频”)并获得一组通用的参数。

在您和通话中的其他人之间建立安全连接。这包括通过网络上可能存在的任何NAT或防火墙获取数据。

压缩音频和视频以传输到另一端,然后在接收时重新组装。还需要处理一些数据丢失的情况,在这种情况下,您要避免图像冻结或听到音频故障。

此功能嵌入了所谓的应用程序编程接口(API):程序员可以向浏览器提供的一组命令,以使其能够进行视频通话。这样做的结果是可以用很少的代码行编写非常基本的VC系统。构建生产系统需要做更多的工作,但是使用WebRTC,浏览器可以为您完成构建客户端的大部分工作。

重要的是,此功能已全部标准化:API本身是由万维网联盟(W3C)发布的,并且网络协议(加密,压缩,NAT遍历等)由Internet工程任务组(IETF)进行了标准化。结果就是大量的规范,包括API规范,用于协商要发送或接收哪种媒体的协议以及用于发送对等数据的机制。总而言之,这代表了许多人在过去十年中所做的大量工作,因此需要数百页的规范。

结果是,有可能构建一个VC系统,该系统可以在每个人的浏览器中正常工作,而无需他们安装任何软件

具有讽刺意味的是,该标准的实际发布有点荒唐可笑:每个主要的浏览器都已经发布WebRTC多年了,正如我上面提到的,有大量的WebRTC VC系统。这是一件好事:广泛部署是使人们确信技术确实能够按预期工作并且文档足够清晰可以实施的唯一途径。这些标准反映的是技术界的集体判断,即我们拥有一个通常可以正常运行的系统,并且我们不会更改基本组件。这也意味着实施非标准机制的VC提供者应该更新标准所说的[1]。

此时,您可能会想:“好,你们都做了很多工作,但是为什么重要呢?我不能只下载Zoom吗?造成WebRTC如此重要的原因有很多,如下所述。

可能最重要的原因是安全性。由于WebRTC完全在浏览器中运行,因此,您无需担心VC提供程序希望您下载的软件中的安全性问题。例如,去年Zoom出现了许多引人注目的安全漏洞,例如,这些漏洞可能导致网站未经您的许可将您添加到通话中,或者发起了所谓的“远程执行代码”攻击,该攻击使攻击者可以运行他们的您计算机上的代码。相比之下,由于WebRTC不需要下载,因此您不会受到供应商客户端中可能存在的任何漏洞的影响。当然,浏览器并没有完美的安全记录,但是每个主流浏览器都在沙盒等安全技术上投入了大量资金。此外,您已经在运行浏览器,因此运行的每个其他应用程序都会增加安全风险。因此,即使体验比应用程序差很多,卡巴斯基还是建议您运行Zoom Web客户端。 [2]

基于WebRTC的会议的第二个安全优势是浏览器控制对摄像头和麦克风的访问。这意味着您可以轻松地阻止网站使用它们,并确保何时使用它们。例如,Firefox会在允许站点使用摄像头和麦克风之前提示您,然后每当它们处于活动状态时在URL栏中显示某些内容。

WebRTC始终在传输过程中进行加密,而VC系统无需执行任何其他操作,因此您几乎不必询问供应商在加密方面是否做得很好。这是Mozilla最参与实施的WebRTC片段之一,符合Mozilla宣言原则4(个人在Internet上的安全性和隐私是基本的,因此不能视为可选)。更令人兴奋的是,我们开始看到针对基于MLS和SFrame构建的WebRTC的内置端到端加密会议的工作。这将有助于解决WebRTC无法提供的某些本机客户端提供的一项主要安全功能:防止服务监听您的呼叫。很高兴看到这方面的进展。

由于基于WebRTC的视频通话应用程序可以通过标准的Web浏览器立即使用,因此可以大大减少摩擦。对于用户而言,这意味着他们可以直接加入呼叫而无需安装任何东西,这使生活变得更加轻松。我一直在打电话,有人无法加入–通常是因为他们的公司使用了不同的VC系统–因为他们没有下载正确的软件,而且这种情况只适用于您的浏览器,因此发生的情况要少得多。在企业对可以安装哪些软件有限制的企业中,这可能是一个更大的问题。

对于想要建立新的VC服务的人来说,WebRTC意味着他们不需要编写新的客户端软件就可以让人们下载它。这使进入市场变得更加容易,而不必担心用户被锁定在一个VC系统中而无法使用您的VC系统。

所有这些都不意味着您无法构建自己的客户端,许多流行的系统(例如WebEx和Meet)具有可下载的端点(或者,对于WebEx,则可以购买硬件设备)。但这意味着您不必这样做,如果您做对了,浏览器用户将能够与您的自定义端点进行对话,从而为休闲用户提供了一种轻松尝试服务的简便方法,而无需花太多精力。 [3]

因为WebRTC是Web的一部分,而不是隔离到单独的应用程序中,所以这意味着它不仅可以用于会议应用程序,还可以用于增强Web本身。您想向游戏中添加音频流吗?在网络研讨会上共享您的屏幕?从相机上传视频?没问题,只需使用WebRTC。

关于WebRTC的一件令人兴奋的事情是,除了视频通话外,还有很多可以使用WebRTC的Web应用程序。可能最有趣的是使用WebRTC“数据通道”,它允许一对客户端在它们之间建立连接,他们可以使用它们直接交换数据。它具有许多有趣的应用程序,包括游戏,文件传输,甚至浏览器中的BitTorrent。仍处于起步阶段,但我认为将来会看到很多DataChannel。

就其本身而言,WebRTC是Web向前迈出的一大步:如果您在20年前告诉人们他们将通过浏览器进行视频通话,他们会嘲笑您-我不得不承认,我最初是怀疑—但是我几乎每天都在工作。但更重要的是,这是网络为使人们的生活更加美好所必须发挥的力量以及我们共同努力做到这一点的一个很好的例子。

技术说明:对于Firefox用户而言,最大的问题根源可能是那些实施了特定于Chrome的机制以处理称为“计划B”的多种媒体流的人们。 IETF最终采用了“统一计划”,Chrome支持它(Google Meet也是如此),但是仍然有许多服务,例如Slack和Facebook Video Calling,它们仅执行Plan B,这意味着它们不起作用。正确地使用实施统一计划的Firefox。 ↩︎

Zoom Web客户端是一个有趣的案例,因为它只是WebRTC的一部分。与Google Meet不同,Zoom Web使用WebRTC捕获音频和视频并通过网络传输媒体,但使用WebAssembly在本地处理所有音频和视频。这完全证明了WebAssembly的强大功能,但是Zoom Web与其他客户(例如Meet或Jitsi)的直接对比显示了使用内置在浏览器中的WebRTC API的优势。 ↩︎

Google已开放其WebRTC堆栈的源代码,这使编写自己的可下载客户端(包括可与浏览器互操作的客户端)变得更加容易。 ↩︎