目录
1. Webrtc技术架构简介
WebRTC(Web Real-Time Communication)项目的最终目的主要是让Web开发者能够基于浏览器(Chrome,FireFox,Safari...)轻易快捷开发出丰富的实时多媒体应用,而无需下载安装任何插件,Web开发者也无需关注多媒体的数字信号处理过程,只需编写简单的Javascript程序即可实现。
W3C等组织正在制定Javascript 标准API
另外WebRTC还希望能够建立一个多互联网浏览器间健壮的实时通信的平台,形成开发者与浏览器厂商良好的生态环境。同时,Google也希望和致力于让WebRTC的技术成为HTML5标准之一,可见Google布局之深远。
1.1 架构图
- 紫色部分是Web开发者Javascript API层(也就是红色框标内模块,也是后续一段时间先要捋清楚的一层);
- 蓝色实线部分是面向浏览器厂商的WebRct Native C++ API层
- 蓝色虚线部分浏览器厂商可以自定义实现
1.2 架构组件介绍
-
Your web app
Web开发者开发的程序,Web开发者可以基于集成WebRTC的浏览器提供的web API(Javascript API)开发基于视频、音频 的实时通信应用,这是Webrtc项目发起的初衷。 -
Web API
面向第三方开发者的WebRTC标准API(Javascript),使开发者能够容易地开发出类似于网络视频聊天的web应用,这儿涉 及的标准化进程以及文档见后续的文章。 -
WebRTC Native C++ API
本地C++ API层,使浏览器厂商容易实现WebRTC标准的Web API,抽象地对数字信号过程进行处理。 -
Transport / Session
传输/会话层:会话层组件采用了libjingle库的部分组件实现,无须使用xmpp/jingle协议。
- a. RTP Stack协议栈:Real Time Protocol;
- b. STUN/ICE:可以通过STUN和ICE组件来建立不同类型网络间的呼叫连接;
- c. Session Management:一个抽象的会话层,提供会话建立和管理功能。该层协议留给应用开发者自定义实现。 -
VoiceEngine && VideoEngine
音频引擎是包含一系列音频多媒体处理的框架,包括从视频采集卡到网络传输端等整个解决方案,VoiceEngine是WebRTC极具价值的技术之一,是Google收购GIPS公司后开源的,在VoIP上,技术业界领先;VideoEngine是包含一系列视频处理的整体框架,从摄像头采集视频到视频信息网络传输再到视频显示整个完整过程的解决方案。
2 Javascript API
2.1 标准制定工作组
万维网联盟(W3C)和互联网工程任务组(IETF)等正在联合制定WebRtc标准。
W3C正在定义Javascript web应用程序与浏览器RTC功能进行交互需要用到的API(Javascript API);IETF正在开发供浏览器RTC功能用来与其他浏览器或互联网通信终端进行通信的协议。
W3C的工作以WEBRTC工作组为中心开展,IETF的工作围绕RTCWEB(实时通信web)工作组开展,这两个工作组相互独立,但彼此之间密切配合,并且有许多共同的参与者和撰稿人。
2.2 重要的官网文档
1. W3C的WEBRTC工作组提供了Webrtc官网参考文档,该文档涵盖的HTML中的对等通信和视频会议有许多方面,定义了用于这些功能的API:
- 实现P2P通信的NAT穿越相关技术,如ICE,STUN,TURN
- 将本地生成的媒体轨道发送到远程对等端,并从远程对等端接收媒体轨道
- 直接向远程对等方发送任意数据。
2. 另外W3C的Media Capture Task Force工作组提供了浏览器捕获本地媒体设备和媒体流的API,参考文档 媒体捕获和流媒体官方文档
3. 后续的Javascript API的使用以及分析文章,将不断引述两个参考文档。