通过WebRTC实现实时视频通信(一)-飞外

通过WebRTC实现实时视频通信(一)

通过WebRTC实现实时视频通信(二)

通过WebRTC实现实时视频通信(三)

WebRTC,名称源自网页实时通信(WebReal-TimeCommunication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google、Mozilla基金会、Opera支持下被包括进万维网联盟的W3C推荐标准。

不需要插件的实时通信

想像一下,如果你的手机、电视、电脑都可以通过一个平台进行通信,想像一下你可以在Web应用中轻松地加入视频聊天和p2p数据分享,你还没有兴奋吗?这就是WebRTC。

想试一试吗?WebRTC现在已经被集成到Chrome,Opera和火狐上了,你可以试试这个应用:

apprtc.appspot.com:


这里是这个应用的具体教程:laterinthisarticle。

如果你没有时间阅读这个系列的文章,想直接编码,你可以这样:


或者你可以直接跳到这一步:在WebRTCcodelab上一步一步的学习如何构建一个完整的视频聊天应用程序,包括一个简单的信号服务器。

关于WebRTC的小故事

其实一个Web开发的终极挑战就是通过音频和视频进行实时通信,视频通信应该像文本通信一样自然,如果没有它,我们在用户交互方面的创新能力会受到限制。

在过去,实时通信都比较复杂,需要非常丰富的音频和视频技术才能被进行开发。完整的实现实时通信需要整合大量的数据和服务,在Web上实现尤其困难。

2008年,Gmail视频聊天火了。2011年谷歌发布了Hangouts,收购了GIPS,GIPS是一个RTC方向的公司,然后开源了它的相关技术,在同年5月,爱立信构建了第一个WebRTC的实现。

Hangouts 是谷歌在2013年的GoogleI/O大会上发布了统一消息服务,整合了此前的GoogleTalk、Google+Messenger和 Hangouts视频聊天服务等产品。新的Hangouts完全基于云计算技术,将成为谷歌其他服务的一大支柱。尽管谷歌在热门的移动消息应用市场动作较 慢,但谷歌正在为未来的发展做准备。从表面来看,Hangouts是类似WhatsApp和FacebookMessenger的又一款消息应用。

WebRTC目前用做实时通信、免费视频插件、音频和视频数据传输。以下是实际的应用:


很多Web服务已经使用了RTC,但是都需要插件或是原生app,比如Skype,Facebook和GoogleHangouts。


关于WebRTC安全性的详细讨论不在本文的讲解范围内,如果你想了解更多这方面的问题,可以看一看IETF提供的WebRTCSecurityArchitecture。

开发者工具

当WebRTC会话被创建的时候,chrome://webrtc-internals(opera://webrtc-internals)就会提供会话详细的数据流和图表:

chrome://webrtc-internals截图

adapter.js是一个JavaScript的WebRTC适配,由Google贡献,它可以解决浏览器差异化的规范的变化。


getUserMedia可以在Chrome,Opera和Firefox中实现。你可以看看这个跨平台的Demo:simpl.info/gum和ChrisWilson的例子,让getUserMedia作为音频的输入。

RTCPeerConnection是在Chrome中和Android设备中使用,经过几次迭代之后RTCPeerConnection现在支持ChromeandOpera作为webkitRTCPeerConnection,Firefox作为mozRTCPeerConnection。

RTCDataChannel支持Chrome25,Opera18和Firefox22以上的版本。

通常有报道说一个平台支持WebRTC,一般都说他们支持getUserMedia,而不支持其它RTC组件,开发的时候需要先弄清楚。

我的第一个WebRTC项目

WebRTC项目需要做以下几件事情:


得到网络信息,如IP地址和端口,通过网络和其它WebRTC客户端交换数据,解决防火墙的NAT转发的问题。


交换媒体和客户端信息,处理如分辨率和编码解码器问题。diaandclientcapability,suchasresolutionandcodecs.


大家应该大概明白WebRTC的概要了。在下一篇文章中,我们会针对这三个API来具体的讲解构建WebRTC的流程。