简要介绍 WebRTC 的历史、架构、用例和未来。
定义 Web 标准会耗费很长的时间,以确保在各种浏览器之间确保实用性、一致性和兼容性。今天,W3C 和 IETF 标志着 WebRTC 或许是疫情期间最重要的标准之一的完成。
历史记录
WebRTC 是一个平台,可为浏览器、移动应用和桌面应用提供实时通信功能,通常用于视频通话。该平台包含一系列全面的技术和标准。Google 于 2009 年发起了开发 WebRTC 的想法,以替代无法在浏览器中运行的 Adobe Flash 和桌面应用。上一代基于浏览器的产品是基于许可专有技术构建的。很多产品都基于该技术构建而成,包括环聊。随后,Google 收购了获得该技术许可的公司,并将其作为开源 WebRTC 项目提供。此代码库已集成到 Chrome 中,可供使用 WebRTC 的大多数应用使用。我们与 Mozilla、Microsoft、Cisco 和 Ericsson 等其他浏览器供应商和行业领军人物一起,在 W3C 和 IETF 中启动了 WebRTC 标准化。2013 年,Mozilla 和 Google 演示了可在其浏览器之间使用视频通话功能。随着该标准的演变,许多架构讨论都导致不同浏览器的实现差异,并对兼容性和互操作性提出了挑战。随着该标准在过去几年最终敲定,大多数分歧最终得以解决。WebRTC 规范现在随附了一整套平台测试和用于解决兼容性问题的工具,浏览器也对其实现进行了相应大幅调整。这段充满挑战的时期终于结束了,在这个时期,网络开发者不得不不断地将其服务用于不同的浏览器实现和规范变更。
架构和功能
RTCPeerConnection
API 是 WebRTC 规范的核心部分。RTCPeerConnection
用于连接不同端点上的两个应用,以使用点对点协议进行通信。PeerConnection
API 与 getUserMedia
(用于访问摄像头和麦克风)以及 getDisplayMedia
(用于捕获屏幕内容)紧密交互。借助 WebRTC,您可以通过 DataChannel
发送和接收包含音频和/或视频内容的流以及任意二进制数据。用于处理、编码和解码音频和视频的媒体功能是任何 WebRTC 实现的核心。WebRTC 支持各种音频编解码器,其中 Opus 是最常用且用途最广的编解码器。WebRTC 实现必须同时支持 Google 可免费使用的 VP8 视频编解码器和用于处理视频的 H.264。WebRTC 连接始终进行加密,这通过两个现有协议实现:DTLS 和 SRTP。WebRTC 非常依赖现有标准和技术,从视频编解码器(VP8、H264)、网络遍历 (ICE)、传输(RTP、SCTP)到媒体描述协议 (SDP),不一而足。这与 50 多个 RFC 相关联。
应用场景:毫秒级延迟
WebRTC 广泛用于对时间要求严格的应用,例如远程手术、系统监控、自动驾驶汽车远程控制,以及基于 UDP 构建的语音或视频通话(在无法缓冲的情况下)。Google、Facebook、Cisco、RingCentral 和 Jitsi 等公司几乎所有基于浏览器的视频通话服务都使用 WebRTC。Google Stadia 和 NVIDIA GeForce NOW 使用 WebRTC 将游戏内容从云端流式传输到网络浏览器,而不会察觉到延迟。
疫情期间的重点是视频通话效果
在过去一年中,由于通过浏览器进行视频通话的增加,WebRTC 在 Chrome 中的使用量增加了 100 倍。浏览器供应商认识到视频通话在疫情期间已成为许多人生活的基本组成部分,因此已开始优化视频通话所依赖的技术。这一点尤其重要,因为当员工和学生开始在家工作和学习时,要求举行大型会议和使用视频会议视频效果的资源变得越来越常见。在过去一年中,Chrome 在视频通话中的电池友好程度已提高多达 30%。我们还针对大量使用情形推出了更多优化措施。在新冠疫情期间,Mozilla、Apple 和 Microsoft 在实现 WebRTC 方面都做出了重大改进,尤其是在确保它们遵循现成的正式标准方面。
WebRTC 的未来
虽然 WebRTC 现已作为 W3C 标准完成,但改进仍在继续。WebRTC 和网络浏览器支持节省高达 50% 的带宽的全新视频编解码器 AV1。我们预计会继续改进开源代码库,进一步减少延迟并提高可流式传输视频的质量。WebRTC NV 收集相关计划,以创建支持新用例的补充 API。这些组件包括对现有 API 的扩展,以便更好地控制现有功能(例如可扩缩视频编码),以及提供对较低级别组件的访问权限的 API。后者可集成高性能的自定义 WebAssembly 组件,使 Web 开发者能够更灵活地进行创新。随着 5G 网络和对互动性更高的服务的需求不断涌现,我们预计今年基于 WebRTC 构建的服务将持续增加。