WebRTC 现在是 W3C 和 IETF 标准

简要介绍 WebRTC 的历史、架构、用例和未来。

胡伊布·克莱因豪特
Huib Kleinhout

定义 Web 标准的过程是一个漫长的过程,以确保各浏览器之间的实用性、一致性和兼容性。如今,W3C 和 IETF 标志着 WebRTC 这一疫情期间最重要的标准之一的完成。

历史记录

WebRTC 是一个为浏览器、移动应用和桌面应用提供实时通信功能的平台,通常用于视频通话。该平台由一整套技术和标准组成。Google 在 2009 年发起了 WebRTC,用于替代无法在浏览器中运行的 Adobe Flash 和桌面应用。上一代基于浏览器的产品是基于已获许可的专有技术构建的。该技术开发了许多产品,包括 Hangouts。Google 随后收购了获得这项技术许可的公司,并以开源 WebRTC 项目的形式提供该技术。此代码库集成在 Chrome 中,可供大多数使用 WebRTC 的应用使用。我们与 Mozilla、Microsoft、Cisco 和 Ericsson 等其他浏览器供应商和行业领军者携手,在 W3C 和 IETF 中都开启了 WebRTC 的标准化流程。2013 年,Mozilla 和 Google 在他们的浏览器之间演示了视频通话功能。随着该标准的演变,许多架构讨论已导致各浏览器的实现差异,并对兼容性和互操作性提出了挑战。该标准在过去几年内最终敲定,其中大多数分歧最终得到解决。WebRTC 规范现在随附了一整套平台测试和用于解决兼容性问题的工具,并且浏览器已相应地调整了其实现。这结束了一段充满挑战的时期,在这一时期,Web 开发者不得不针对不同的浏览器实现方式和规范变更不断采用他们的服务。

架构和功能

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 标准完成,但仍会继续改进。可节省高达 50% 带宽的全新视频编解码器 AV1 即将在 WebRTC 和网络浏览器中使用。我们将持续改进开源代码库,以进一步减少延迟并提高可流式传输的视频的画质。WebRTC NV 收集创建补充 API 的计划,以支持新的用例。这些 API 包含对现有 API 的扩展,可让您更好地控制现有功能(如可伸缩视频编码),以及可访问较低级别组件的 API。后者可集成高性能的自定义 WebAssembly 组件,使 Web 开发者能够更灵活地进行创新。随着 5G 网络不断涌现以及对更多互动服务的需求,我们预计在未来一年内看到基于 WebRTC 构建的服务不断增加。