WebRTC现状及实现概要
2015-07-13 22:56
316 查看
1 引言
1.1 编写目的
本文讲述浏览器引入 WebRTC(Web Real-Time Communication) 技术的必要性、WebRTC现状及实现方法。2011 年以前,浏览器之间要实现实时通信需要私有技术,这些技术大部分都是通过插件和客户端来安装使用。对于许多用户来说,插件的下载、安装和更新是一个复杂、繁琐和容易出错的操作。对于开发人员来说,插件的的调试、测试、部署、错误修复和维护同样很难,同时涉及到的一些技术是受版权保护的,整合也是很复杂的。另外,有时很难说服用户来安装插件。
Google 在 2010 年收购了 GIPS(Global IP Solutions)公司获得 WebRTC 技术,在 2011 年,按 BSD 协议把 WebRTC 开源了,同年 w3c 启动 WebRTC 计划,使 WebRTC成为 HTML5 标准的一部分,目前该规范还在开发中。
Google 通过把 WebRTC 项目开源,希望浏览器厂商能够将该技术内建在浏览器中,从而使Web应用开发人员能够通过HTML标签和JavaScript API就实现Web音频、视频通信功能。Google 在其官网上列出了使用WebRTC技术的四个理由:
互联网成功的一个关键因素是一些核心技术如HTML、HTTP和TCP/IP是开放和免费实现的。目前,在浏览器通信领域还没有免费、高质量、完整的解决方案。WebRTC就是这样的技术。
该技术的使用已经超过了 8 年,集成了最佳的音频、视频引擎,并被部署到数以百万的终端中,同时这些技术 Google不收取任何费用。
该技术包含了使用STUN、ICE、TURN、RTP-over-TCP的关键NAT和防火墙穿透技术,并支持代理。
通过浏览器,WebRTC把通讯双方的信令状态直接映射到PeerConnection里面来抽象信令处理,这样 开发人员按不同的应用场景选择不同的会话协议,比如 SIP、XMPP/Jingle等等)。
1.2 定义
WebRTC | WebRTC 是 Web Real-Time Communication 的缩写,它是一项在浏览器内部进行实时数据、视频和音频通信的技术,是 Google 2010年以6820万美元收购Global IP Solutions公司而获得一项技术。 |
MediaStreamTrack | 媒体数据源,一个媒体数据源构成一个 MediaStreamTrack,比如音频数据源和视频数据源,多个相互之间有关联的媒体数据源(比如有同步关系的音频视频媒体数据源)构成一个媒体流(MediaStream)。 |
MediaStream | 媒体流,一个媒体流包含 0 个到多个的媒体数据源,媒体流里面的数据源在呈现(render)必须同步。 MediaStream 通过 getUserMedia 获得。 |
DataChannel | 数据通道,两个 WebRTC 终端的连接建立后,它们可以通过这个数据通道传输任意类型的数据。 |
Peer | 通过 WebRTC 进行数据交互的节点或用户或终端,它通常是一个 Web App,它们之间的发现,连接的建立和断开通过 signalling(信令)控制。 |
PeerConnection | 表示一个 WebRTC 通讯连接对象,它维护与这个通讯连接相关的 MediaStream,处理通讯双方信令事件,完成通讯数据的传输。 |
Signalling | 信令,WebRTC 网络通过 Signalling 来发现各个 Peer,通过 Signalling 来控制各个 Peer 之间连接的建立和断开。 |
STUN | STUN(Session Traversal Utilities for NAT,NAT会话传输应用程序)是一种网络协议,它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一个本地端口所绑定的Internet端端口。这些信息被用来在两个同时处于NAT 路由器之后的主机之间建立UDP通信。该协议由RFC 5389定义。 |
ICE | 交互式连接建立(Interactive Connectivity Establishment),一种综合性的NAT穿越的技术。 ICE 是由IETF的MMUSIC工作组开发出来的一种framework,可整合各种NAT穿透技术,如STUN、TURN、RSIP(Realm Specific IP,特定域IP)等。该framework可以让SIP的客户端利用各种NAT穿透方式打穿远程的防火墙。 |
TURN | TURN(Traversal Using Relay NAT),是一种资料传输协议(data-transfer protocol)。通过中继服务器,穿透 NAT 或防火墙使两个 TCP 或 UPD 客户端建立连接。 |
相关文章推荐
- 2015071302 - 感谢
- 【c++】size_t 和 size_type的区别
- 基于UC/COSII系统的STM32F103系列单片机外部中断按键的一种使用方法
- Android开发之一分钟教你使用双向滑动菜单
- android 自定义TextView删除线
- NetRouter创世纪
- 关于ViewPager中显示fragment的生命周期调用问题
- 如何调试makefile变量
- POJ 3069 Saruman's Army (简单贪心)
- C语言指针、地址、赋值三者含义
- 注解
- 第一百零二天 how can I 坚持
- 九度oj 1001
- 继承
- 2015071301 - 烧烤模式
- Objective-C内存管理(三)set方法内存管理
- wamp 2.5 在zender studio 12.5中开启xDebug
- STM32学习--流水灯
- 关于C++内存中字节对齐问题的详细介绍
- shell中${}的妙用