1.2 WebRTC的技术架构

从技术实现的角度讲,在浏览器之间进行实时通信需要使用很多技术,如音视频编解码、网络连接管理、媒体数据实时传输等,还需要提供一组易用的API给开发者使用。这些技术组合在一起,就是WebRTC技术架构,如图1-1所示。

012-01

图1-1 WebRTC技术架构

WebRTC技术架构的顶层分为两个部分。一部分是Web API,一组JavaScript接口,由W3C维护,开发人员可以使用这些API在浏览器中创建实时通信应用程序。另一部分是适用于移动端及桌面开发的libwebrtc,即使用WebRTC C++源码在Windows、Android、iOS等平台编译后的开发包,开发人员可以使用这个开发包打造原生的WebRTC应用程序。

第二层是WebRTC C ++ API,它是Web API和libwebrtc的底层实现。该层包含了连接管理、连接设置、会话状态和数据传输的API。基于这些API,浏览器厂商可以方便地加入对WebRTC的支持。

WebRTC规范里没有包含信令协议,这部分需要研发人员依据业务特点自行实现。

WebRTC支持的音频编码格式有OPUS和G.711,同时还在音频处理层实现了回音消除及降噪功能。WebRTC支持的视频编码格式主要有VP8和H264(还有部分浏览器支持VP9及H265格式),WebRTC还实现了Jitter Buffer防抖动及图像增强等高级功能。

在媒体传输层,WebRTC在UDP之上增加了3个协议。

  • 数据包传输层安全性协议(DTLS)用于加密媒体数据和应用程序数据。
  • 安全实时传输协议(SRTP)用于传输音频和视频流。
  • 流控制传输协议(SCTP)用于传输应用程序数据。

WebRTC借助ICE技术在端与端之间建立P2P连接,它提供了一系列API,用于管理连接。WebRTC还提供了摄像头、话筒、桌面等媒体采集API,使用这些API可以定制媒体流。

我们将在后面的章节详细讨论WebRTC架构的主要技术(不包含C++部分),并结合实例展示这些技术的应用。