什么是WebRTC
如今,互联网主流的音频、视频通信服务产品,如Skype, QQ, GTalk等, 都是各自厂商私有的技术。用户需要安装插件或者桌面客户端,才能使用其提供的音频或者视频通信功能。 如果某天,不使用任何插件,只通过浏览器,就能实现手机、平板、电视和电脑的视频或者音频通信;那会是什么场景? 而这正是WebRTC的愿景。
WebRTC(Web Real-Time Communication)由一套开放的标准、协议和一组JavaScript API构成。2010年,谷歌收购了VoIP软件开发商GIPS(Global IP Solutions),并获得了视频采集、编解码、网络传输、回音消除等RTC相关技术。2011年6月,谷歌开放了该部分源码,并积极推动该项技术,这奠定了RTC在Web领域发展的基础。
WebRTC使浏览器之间能够通过点对点的通信方式,直接完成视频、音频以及数据的实时传输。同时,WebRTC容许开发人员通过调用浏览器支持的API,使用HTML5标签和JavaScript轻松的实现基于Web的音频、视频应用。
目前,WebRTC的标准还在不断完善中,W3C、IETF和其他一些浏览器厂商正在积极的推动WebRTC的发展。WebRTC开创了浏览器之间能够直接通信并完成视频或者音频传输的新时代。对于构建开放的、标准的,无插件,免费的视频音频通信应用,迈出了划时代的一步。
WebRTC的架构
WebRTC的架构如下图所示
其中主要包括如下几部分:
紫色部分是面向Web开发者的API层。该部分API由浏览器提供。
蓝色实线部分是面向浏览器厂商的API层。
蓝色虚线部分是浏览器厂商可以自定义实现的部分。
绿色部分是WebRTC的引擎部分,当前主要包括视频引擎、音频引擎以及传输协议。
a) 视频引擎
包含从视频采集、编解码(I420/VP8)、加密、媒体文件、图像处理、显示、网络传输等功能。
提供VP8作为视频图像编解码器。降低由于视频抖动和视频信息包丢失带来的不良影响。另外,对采集到的图像进行增强处理,包括明暗度检测、颜色增强、降噪处理等,提升视频质量。
b) 音频引擎
包含从音频采集、编解码(iLIBC/iSAC)、抖动处理(NetEQ)、加密、输出、同步、音量控制、网络传输。
提供iSAC/iLBC两种处理音频的解码方案。同时,使用NetEQ算法有效的处理由于网络抖动和语音包丢失时候对语音质量产生的影响。另外,还提供了回声消除和降噪等机制。
c) 传输协议
采用成熟的RTP/RTCP协议栈,支持多路复用,并通过STUN、TURN以及ICE保证网络间的通信。
截止目前,整个WebRTC的标准还在不断完善中。W3C的WebRTC工作组负责浏览器API的标准化,IETF的 WebRTC工作组则主要负责通信协议、数据格式、安全等方面的标准化。