WebRTC 的历史、架构、用例和未来概览。
定义 web 标准的过程漫长,以确保跨浏览器的实用性、一致性和兼容性。今天,W3C 和 IETF 标志着疫情期间最重要的标准之一:WebRTC 的完成。
历史
WebRTC 是一个平台,为浏览器、移动应用和桌面应用提供实时通信功能,通常用于视频通话。该平台由一套全面的技术和标准组成。Google 在 2009 年提出了创建 WebRTC 的想法,作为 Adobe Flash 和无法在浏览器中运行的桌面应用的替代方案。上一代基于浏览器的产品构建于获得许可的专有技术之上。许多产品都使用这项技术构建,包括 Hangouts。然后,Google 收购了向其授权这项技术的公司,并将其作为开源 WebRTC 项目提供。此代码库集成在 Chrome 中,并被大多数使用 WebRTC 的应用使用。与其他浏览器供应商和行业领导者(如 Mozilla、Microsoft、Cisco 和 Ericsson)一起,WebRTC 的标准化在 W3C 和 IETF 中启动。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 将游戏玩法流从云端传输到 web 浏览器,而没有可察觉的延迟。
疫情促使人们关注视频通话性能
在过去一年中,由于浏览器内视频通话的增加,WebRTC 在 Chrome 中的使用量增加了 100 倍。认识到视频通话已成为疫情期间许多人生活的基本组成部分,浏览器供应商已开始优化视频通话所依赖的技术。当员工和学生开始在家工作和学习时,资源密集型的大型会议和视频会议中的视频效果变得更加普遍,这一点尤其重要。在过去一年中,Chrome 在视频通话方面变得更加省电,最多可节省 30% 的电量,并且针对重度使用场景将推出更多优化。Mozilla、Apple 和 Microsoft 都 对其 WebRTC 的实现进行了重大改进 疫情期间,尤其是在确保他们遵守现已正式确定的标准方面。
WebRTC 的未来
虽然 WebRTC 现在已作为 W3C 标准完成,但改进仍在继续。新的视频编解码器 AV1 可节省高达 50% 的带宽,并且正在 WebRTC 和 web 浏览器中推出。开源代码库的持续改进有望进一步减少延迟并提高可流式传输的视频质量。WebRTC NV 汇集了创建补充 API 以启用新用例的倡议。这些包括对现有 API 的扩展,以更好地控制现有功能(例如 可伸缩视频编码),以及提供对 更低级别组件 的访问权限的 API。后者为 web 开发者提供了更大的灵活性,可以通过集成高性能自定义 WebAssembly 组件来进行创新。随着新兴 5G 网络的出现以及对更多交互式服务的需求,我们预计在未来一年中,构建在 WebRTC 之上的服务将继续增加。