WebRTC 现在是 W3C 和 IETF 标准

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

Huib Kleinhout
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 标准完成,但改进仍在继续。WebRTC 和网络浏览器中即将推出新的视频编解码器 AV1,它最多可节省 50% 的带宽。开源代码库的持续改进有望进一步减少延迟并提高可流式传输的视频质量。 WebRTC NV 旨在创建补充 API,以实现新的应用场景。这些 API 包括对现有 API 的扩展,以便更好地控制现有功能(例如可伸缩视频编码),以及提供对较低级别组件的访问权限的 API。后者为 Web 开发者提供了更大的灵活性,使其能够通过集成高性能自定义 WebAssembly 组件进行创新。随着 5G 网络的兴起和对更多互动服务的需求,我们预计未来一年基于 WebRTC 的服务将持续增加。