解决方案

技术专栏

SOLUTIONS

技术专栏

联系我们

WebRTC技术概述(一)

首页 >> 技术专栏 >> WebRTC专栏 >> WebRTC技术概述(一)

WebRTC技术概述(一)

1. 前言

  WebRTC(Web Real-Time Communication——网页实时通信)是一个基于浏览器的实时多媒体通信技术。该项技术旨在使Web浏览器具备实时通信能力;同时,通过将这些能力封装并以JavaScript API的方式开放给Web应用开发人员,使得Web应用开发人员能够通过HTML标签和JavaScript API快速地开发出基于Web浏览器的实时音视频应用,而无需依赖任何第三方插件。该项技术将Web浏览器打造成一个适用于在所有用户设备(比如移动智能终端和个人电脑等)间进行实时的音视频和数据通信的通用平台。

  在WebRTC技术出现之前,基于Web浏览器的多媒体通信服务是构建在特定的浏览器插件(如Adobe Flash Player)之上的,因为浏览器所依赖的HTTP协议是一种无连接状态的协议——即浏览器与服务器建立连接,下载文件,断开连接,再显示接收到的文件。因此,浏览器不能与服务器实时动态地交换数据。无连接状态的HTTP协议导致需要实时通信的服务(如聊天等)只能采取定时访问服务器的方法(即轮询方式)来实现。然而,在用户访问量增多时,这种方式严重的消耗服务器端资源,进而严重的影响服务器的性能。由于软硬件平台日趋多样性,下列问题将在基于浏览器插件的多媒体应用中突显:1)加大IT公司对于插件和基于该插件的应用的研发和维护成本;2)加大插件开发人员对于插件和基于该插件的应用的开发、测试和维护工作;3)加大涉及到受版权保护的技术的整合难度;4)加大说服用户安装插件的难度。

  目前,WebRTC由IETF(Internet Engineering Task Force——互联网工程任务组)和W3C(World Wide Web Consortium——万维网联盟)联合负责其标准化工作。IETF定制WebRTC的互联网基础协议标准,该标准也被称为RTCWeb(Real-Time Communication in Web-browsers)。W3C则负责定制WebRTC的客户端JavaScript API接口的标准。目前参与该技术标准定制的公司主要有思科、微软、谷歌和爱立信等。其中,微软为揭示现有WebRTC存在的不足,进而推动其不断向前发展,提出了WebRTC的另一种形式,即CU-RTC-Web(Customizable, Ubiquitous Real Time Communication over the Web)。

  2. 系统构成

  WebRTC是通过将如下功能集成到现有浏览器来实现为异构系统提供统一的多媒体实时通讯平台:会话管理、音频引擎、视频引擎和网络传输。同时,WebRTC为Web开发人员提供了Web API (即JavaScript API)来开发基于Web的音视频应用;为浏览器厂商提供了WebRTC Native C++ API用于实现Web API的函数集(如图1所示)。在本章节,首先,我们介绍WebRTC的组成模块;其次,我们介绍WebRTC的API接口;最后,我们介绍组成模块与接口之间的对应关系。

  2.1 组成模块

  A. 会话管理

  WebRTC的会话管理也被称为抽象信令。抽象信令的作用是将具体业务与信令控制的分离,从而适应广大Web应用中的信令控制。会话管理的实现有两种方式:一种是以浏览器为主的实现方式ROAP(RTCWeb Offer/Answer Protocol),另一种是以Javascript为主的实现方式JSEP(Javascript Session Establishment Protocol)。前者的优点在于可以直接使用现有协议栈实现;缺点是灵活度较低,无法支持私有协议,另外,如果将过多的协议栈集成到浏览器,将使得浏览器会变得“臃肿”。后者的优势在于灵活度高,能够适用于多种协议。为提高会话管理的普适性,以及简化会话管理,W3C通过多次讨论,最终采用了JSEP(JavaScript Session Establishment Protocal)方式来进行会话管理。

  B. 音频引擎

  音频引擎负责从麦克到网络侧、网络侧到音箱的音频处理。它包含的功能主要有音频编解码和声音处理两部分。在音频编解码上,WebRTC主要采用两种语音编码格式:iSAC(internet Speech Audio Codec)和iLBC(internet Low Bitrate Codec),来分别对宽带与窄带环境的语音进行编码。在声音处理上,WebRTC主要包括回声消除、错误隐藏和降噪处理等功能,用来降低由网络抖动和丢包等对声音质量造成的影响,并尽可能降低声音延迟。

  C. 视频引擎

  视频处理引擎负责摄像机到网络侧、网络侧到屏幕显示的视频处理。它主要包括视频编解码和图像处理。在视频编解码上,目前WebRTC主要采用VP8技术(未来VP9也将被集成到WebRTC中),使得WebRTC在较低码率的环境,提供较高质量的视频。在图像处理上,WebRTC主要包括抖动缓冲和图像增强等功能,用来降低从摄像机采集到的图像的噪音。

  D. 网络传输

  网络传输负责对采集到的音视频数据进行加密、防火墙穿透和传输。WebRTC将设备采集到的音视频数据在加密的情况下采用SRTP协议进行传输,以确保信息在传输过程中的安全性。另外,WebRTC采用STUN、TURN和ICE等协议栈对VoIP网络中的防火墙或者NAT进行穿透。其中,STUN可以处理大部分NAT穿透问题;TURN是STUN协议的一个增强版,专门用于处理对称形NAT穿透问题;ICE是一个整合了STUN和TURN的框架,为VoIP或视频通话配置以及媒体传输提供可靠的服务。

  图 1 WebRTC总体架构,摘自百度百科