WebRTC作为一个工具箱相较于传统的视频会议关于安全性、良好的兼容性、增强网络的优势。
作者 / Eric Rescorla
原文链接 / https://blog.mozilla.org/blog/2021/02/04/what-webrtc-means-for-you/
广泛提供的高质量视频会议是互联网真正成功之一。当然,视频会议的概念由来已久(可以去看看2001年Heywood Floyd用Bell videophone给家人打视频电话的那一幕),但直到最近,它还需要专门的设备或者至少需要下载专门的软件。简单地说,WebRTC就是在Web浏览器中进行视频会议(VC),无需下载:你只需访问一个网站并进行通话。大多数主要的VC服务都有WebRTC版本:包括Google Meet、Cisco WebEx、Microsoft Teams,以及一大堆小公司。
它是一个工具箱,而不是一部手机
WebRTC并不是一个完整的视频会议系统;它是一套内置在浏览器中的工具,它可以解决构建VC系统的许多困难,让你不必再去做。这些工具包括:
- 从电脑的麦克风和摄像头捕捉音频和视频。这也包括所谓的声学回声消除:即使人们不戴耳机,也能消除回声(希望如此)。
- 允许两个端点协商它们的能力(例如“我想用AV1编解码器发送和接收1080p的视频”),并达成一组共同的参数。
- 在你和通话中的其他人之间建立安全连接。这包括通过网络上的任何NAT或防火墙获取数据。
- 将音频和视频压缩后传输给对方,然后在收到后重组。此外还需要处理部分数据丢失的情况,在这种情况下,你要避免出现影响定格或听到音频故障。
这个功能被嵌入到所谓的应用程序编程接口(API)中:程序员向浏览器提供一组命令,让它建立视频呼叫。这样做的结果是,可以用很少的几行代码写出一个非常基本的VC系统。构建一个生产系统是比较麻烦的,但是有了WebRTC,浏览器为你完成了构建客户端的大部分工作。
标准化
重要的是,这些功能都是完全标准化的:API本身是由World Wide Web Consortium(W3C)发布的,网络协议(加密、压缩、NAT遍历等)是由the Internet Engineering Task Force(IETF)标准化的。其结果是一大堆规范,包括API规范、协商发送或接收什么媒体的协议,以及发送点对点数据的机制。总而言之,这代表了许多人在十年间所做的大量工作,最终产生了数百页的规范。
其结果是,可以在浏览器中创建一个适用于所有人的VC系统,而不需要安装任何软件。
讽刺的是,标准的实际发布有点虎头鼠尾:每个主流浏览器都已经发布WebRTC多年,并且正如我上面提到的,有大量的WebRTC VC系统。这是一件好事:广泛的部署是获得信心的唯一途径,即技术确实像预期的那样工作,文档足够清晰,可以从中实现。这些标准反映的是技术界的集体判断,即我们有一个正常有效的系统,我们不会改变基本的部分。这也意味着,对于实施非标准机制的VC供应商来说,是时候按照标准的要求进行更新了。
你为什么要关心这些?
这时你可能会想:"好吧,你们都做了很多工作,但这又有什么关系呢?我不能直接下载Zoom吗?WebRTC之所以大有来头,有以下几个重要原因。
安全性
可能最重要的原因是安全性。因为WebRTC完全在浏览器中运行,这意味着你不需要担心VC提供商想让你下载的软件中的安全问题。举个例子,去年Zoom有许多引人注目的安全漏洞,例如,允许网站在未经允许的情况下将你添加到调用,或者安装所谓的远程代码执行攻击,允许攻击者在你的计算机上运行他们的代码。相比之下,因为WebRTC不需要下载,所以你不会暴露在供应商客户端可能存在的任何漏洞面前。当然,浏览器并没有一个完美的安全记录,但是每个主要的浏览器都在安全技术上投入了大量的资金,比如sandboxing。此外,你已经在运行浏览器,因此每运行一个额外的应用程序都会增加安全风险。为此,Kaspersky建议运行Zoom Web客户端,即使体验比应用程序糟糕得多。
基于WebRTC的会议的第二个安全优势是浏览器控制了对摄像头和麦克风的访问。这意味着你可以很容易地阻止站点使用它们,以及确定它们何时使用。例如,在让站点使用摄像头和麦克风之前,Firefox会提示你,然后在URL栏中显示它们运行时的内容。
WebRTC在传输过程中一直都是加密的,,不需要VC系统做其他的事,所以你大多不用问供应商的加密工作做得好不好。这是Mozilla在WebRTC中参与最多的部分之一,符合Mozilla宣言第4条原则(个人在互联网上的安全和隐私是基本的,不能被视为可选的)。更令人兴奋的是,我们开始看到在MLS和sframe上为WebRTC构建的内置端到端加密会议。这将有助于解决一些原生客户端没有提供的一个主要安全功能:防止服务监听你的通话。很高兴看到这方面的进展。
良好的兼容性
因为基于 WebRTC 的视频呼叫应用程序可以在标准的 Web 浏览器上工作,所以它们可以显著提高兼容性。对于用户来说,这意味着他们无需安装任何东西就可以加入一个呼叫,这让生活变得容易得多了。我参加过很多电话会议,有人无法加入——通常是因为他们的公司使用了不同的VC system——因为他们没有下载正确的软件,而现在这种情况已经少了很多,因为它只需与浏览器配合使用。在对有软件安装限制的企业中,这可能是一个更大的问题。
对于那些想要支持一个新的 VC 服务的人来说,WebRTC 意味着不需要编写一个新的客户端软件并让人们下载。这使得进入市场变得更加容易,而不必担心用户被锁定在一个 VC 系统中而无法使用你的系统。
这并不意味着你不能构建自己的客户端,许多流行的系统,如WebEx和Meet都有可下载的端点(或对于WebEx来说,可以购买硬件设备)。但这意味着你不必这么做,如果你做得好,浏览器用户将能够与你的自定义终端对话,从而不需要太投入为普通用户提供了一种简单的方式来尝试你的服务。
增强网络
因为WebRTC是Web的一部分,而不是单独的应用程序,这意味着它不仅可以用于会议应用程序,还可以增强Web本身。你想在游戏中添加音频流?在网络研讨会上分享你的屏幕?从你的相机上传视频?没问题,使用WebRTC就可以了。
WebRTC令人兴奋的一点是,除了视频通话之外,还有很多Web应用程序可以使用WebRTC。最有趣的可能是WebRTC“Data Channels”的使用,它允许一对客户端在它们之间建立一个连接,它们可以使用这个连接直接交换数据。这有许多有趣的应用程序,包括游戏、文件传输,甚至浏览器中的BitTorrent。现在还为时过早,但我认为未来我们会看到很多Data Channels。
更大的图像
WebRTC 本身就是互联网向前迈出的一大步:如果你在20年前告诉人们,他们将从他们的浏览器做视频通话,他们会嘲笑你,我不得不承认,最初我也持怀疑态度,但我几乎每天在工作中都这么做。但更重要的是,这是一个很好的例子,说明了网络的力量可以让人们的生活变得更好,也说明了当我们共同努力时,我们可以做些什么。
1.技术要点:对Firefox用户来说,最大的问题可能是人们实现了一个特定于chrome的机制来处理多媒体流,这个机制被称为“Plan B”。IETF最终采用了一种叫做““Unified Plan”的东西,Chrome也支持它(就像Google Meet一样),但仍然有一些服务,如Slack和Facebook Video Calling,它们只采用Plan B,这意味着它们不能与实现了统一计划的Firefox正常工作。
2.Zoom Web客户端是一个有趣的例子,因为它只有部分WebRTC。与(比如说) Google Meet不同,Zoom Web使用WebRTC采集音频和视频并在网络上传输媒体,但在本地使用WebAssembly完成所有音频和视频。这证明了WebAssembly的强大功能,,但如果将Zoom Web与Meet或Jitsi等其他客户端进行正面比较,就会发现使用浏览器内置的WebRTC API的优势。︎
3.谷歌已经开放了他们的WebRTC协议栈,这使得你更容易编写自己的可下载客户端,包括一个将与浏览器互操作的客户端。︎