WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google、Mozilla基金会、Opera支持下被包括进万维网联盟的W3C推荐标准。
不需要插件的实时通信
想像一下,如果你的手机、电视、电脑都可以通过一个平台进行通信,想像一下你可以在Web应用中轻松地加入视频聊天和p2p数据分享,你还没有兴奋吗?这就是WebRTC。
想试一试吗?WebRTC现在已经被集成到Chrome,Opera和火狐上了,你可以试试这个应用:
-
在Chrome、Opera或Firefox中打开apprtc.appspot.com。
-
点击允许按钮允许应用使用你的摄像头。
-
在新的选项卡,甚至在另外一台电脑上打开正文显示的URL。
这里是这个应用的具体教程: later in this article。
开始
如果你没有时间阅读这个系列的文章,想直接编码,你可以这样:
-
你果你没有用过getUserMedia,要先学习一下它,教程:HTML5 Rocks article ,Demo:simpl.info/gum。
-
掌握RTCPeerConnection API,教程:simple example below ,Demo:simpl.info/pc,。
-
了解一下WebRTC的实现、防火墙和NAT转发,教程:apprtc.appspot.com.
-
webRTC使用大头照拍摄:gbtags.com/gb/share/2491.htm
或者你可以直接跳到这一步:在WebRTC codelab上一步一步的学习如何构建一个完整的视频聊天应用程序,包括一个简单的信号服务器。
关于WebRTC的小故事
其实一个Web开发的终极挑战就是通过音频和视频进行实时通信,视频通信应该像文本通信一样自然,如果没有它,我们在用户交互方面的创新能力会受到限制。
在过去,实时通信都比较复杂,需要非常丰富的音频和视频技术才能被进行开发。 完整的实现实时通信需要整合大量的数据和服务,在Web上实现尤其困难。
2008年,Gmail视频聊天火了。2011年谷歌发布了Hangouts,收购了GIPS,GIPS是一个RTC方向的公司,然后开源了它的相关技术,在同年5月,爱立信构建了 第一个WebRTC的实现。
Hangouts 是谷歌在2013年的Google I/O大会上发布了统一消息服务,整合了此前的Google Talk、Google+ Messenger和 Hangouts视频聊天服务等产品。新的Hangouts完全基于云计算技术,将成为谷歌其他服务的一大支柱。尽管谷歌在热门的移动消息应用市场动作较 慢,但谷歌正在为未来的发展做准备。从表面来看,Hangouts是类似WhatsApp和Facebook Messenger的又一款消息应用。
WebRTC目前用做实时通信、免费视频插件、音频和视频数据传输。以下是实际的应用:
-
很多Web服务已经使用了RTC,但是都需要下载插件或是原生app,比如Skype,Facebook和Google Hangouts。
-
下载安装更新插件非常麻烦。
-
插件不容易发现问题,测试很困难,大部分都需要授权,开发成本太高。
安全性
这里有几个实时通信应用可以出现的安全性问题:
-
未加密的媒体数据流可以会在浏览器或通信途中被获取。
-
应用可能会在用户不知情的情况下记录视频和其它信息。
-
恶意软件或病毒可能被安装在一个不起眼的插件或应用中。
WebRTC通过各种特性避免了这些问题:
-
对数据流和信号量进行编码加密。
-
。WebRTC 不是一个插件,可以运行在浏览器的沙箱中,组件不需要单独安装。
-
摄像头和手机必须通过严格的授权,只有在显示用户界面的时候才能调用。
关于WebRTC安全性的详细讨论不在本文的讲解范围内,如果你想了解更多这方面的问题,可以看一看IETF提供的 WebRTC Security Architecture。
开发者工具
-
跨浏览器的 interop notes
-
adapter.js 是一个JavaScript 的WebRTC适配, 由Google贡献,它可以解决浏览器差异化的规范的变化。
-
想了解更多WebRTC信号量,可以通过apprtc.appspot.com 查看输出日至。
-
Chrome bugsBug报告:crbug.com/new 。Opera:bugs.opera.com/wizard/ 。Firefox:bugzilla.mozilla.org。
在哪里使用WebRTC
WebRTC有以下三个API:
-
MediaStream (别名 getUserMedia)
getUserMedia 可以在Chrome, Opera 和 Firefox中实现。 你可以看看这个跨平台的Demo:simpl.info/gum 和Chris Wilson的 例子 ,让getUserMedia作为音频的输入。
RTCPeerConnection 是在Chrome中和Android设备中使用,经过几次迭代之后RTCPeerConnection现在支持 Chrome and Opera 作为webkitRTCPeerConnection,Firefox 作为mozRTCPeerConnection。
RTCDataChannel 支持Chrome 25, Opera 18 和Firefox 22 以上的版本。
通常有报道说一个平台支持WebRTC,一般都说他们支持getUserMedia,而不支持其它RTC组件,开发的时候需要先弄清楚。
我的第一个WebRTC项目
WebRTC 项目需要做以下几件事情:
-
取到音频、视频或其它数据的数据流。
-
得到网络信息,如IP地址和端口,通过网络和其它WebRTC客户端交换数据,解决防火墙的NAT转发的问题。
-
协调信号来报告错误,启动或关闭会话。
-
交换媒体和客户端信息,处理如分辨率和编码解码器问题。dia and client capability, such as resolution and codecs.
-
数据流通信。
为了实现数据流之间的通信,WebRTC实现了以下的接口:
-
MediaStream: 取得数据流,比如从摄像头和手机中获取。
-
RTCPeerConnection: 音频和视频通话,设备加密和带宽管理。
-
RTCDataChannel: 点对点通信。
相关推荐
本教程主要以WebRTC JavaScript API为例,使用WebRTC实现实时通信 1. 介绍WebRTC整体架构,WebRTC JavaScript API 2. 如何获取webcam摄像头音视频数据 3. WebRTC peer之间建联流程 4. 介绍WebRTC信令,使用socket.IO...
jspsip实现webrtc进行音视频通信demo jspsip实现webrtc进行音视频通信demo jspsip实现webrtc进行音视频通信demo jspsip实现webrtc进行音视频通信demo jspsip实现webrtc进行音视频通信demo
WEBRTC多人视频通话,可以支持多人视频通话,目前是三人的,因为视频通话的信令用到的是websocket,所以代码里面也放入了单独websocket通信的demo,解释也比较详细了,原来有一个列子是两人的,后面改成三人的,多人...
webRTC技术的应用,通过启动浏览器调用设备的视频和音频流实现实时通信。
基于WebRTC技术的多人视频通信系统,才鑫,双锴,WebRTC技术使浏览器具备了实时音视频通信能力,开发者通过调用其API,可以实现一对一的WebRTC连接,完成音视频通信。目前,已经有很多
一种实现WebRTC和IMS之间视频会议的解决方案,宋洋,双锴,WebRTC技术是一项在浏览器内部进行实时视频和音频通信的技术。通过该项技术,开发Web的实时通信技术只需要调用简单的JavaScr&
本课程讲述如何使用OC 实现1V1 Android端实时音视频通信包括如何使用nodejs开发WebSocket信令服务器理解WebRTC媒体的交互流程coturn服务器搭建Android音视频客户端开发
SipSorcery WPF实现(用于C#和.NET的WebRTC、SIP和VoIP库 专为实时通信应用程序设计)
android 实现webrtc,示例 github 资源的google开源的webrtc 视频通信对话 协议 rtp / rtcp webview 等 ,视频,聊天等
WebRTC实现了基于网页的视频会议,标准是WHATWG 协议,目的是通过浏览器提供简单的javascript就可以达到实时通讯(Real-Time Communications (RTC))能力。 WebRTC(Web Real-Time Communication)项目的最终目的...
【资源说明】 1、该资源内项目代码都是经过测试运行成功,功能正常的情况下...基于JavaScript WebRTC实现跨平台音视频通话(源码+项目说明)(实现1对1视频,多人视频,视频直播,视频会议,房间管理,权限管理等).zip
基于webrtc的unity多人游戏实时语音(基于WEBRTC的Mutiplayer中Impl实时游戏语音的Unity演示) 简介 MutiRTC_Unity unity工程,基于版本5.3.3f1。包含一个简单的多人实时语音聊天室场景。语音模块以平台sdk形式集成...
本课程讲述如何使用Flutter-WebRTC实现1V1移动端跨平台实时音视频通信 包括如何使用nodejs开发WebSocket信令服务器 理解WebRTC媒体的交互流程 coturn服务器搭建 Flutter客户端开发
WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C...
WebRTC实现了基于网页的视频会议,标准是WHATWG 协议,目的是通过浏览器提供简单的javascript就可以达到实时通讯(Real-Time Communications (RTC))能力。 WebRTC(Web Real-Time Communication)项目的最终目的...
本课程讲述如何使用OC 实现1V1 iOS端实时音视频通信包括如何使用nodejs开发WebSocket信令服务器理解WebRTC媒体的交互流程coturn服务器搭建iOS音视频客户端开发
WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。...
一、WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音通话或视频聊天的技术,是谷歌 2010 年以 6820 万美元收购 Global IP Solutions 公司而获得的一项技术。...
WebRTC是基于浏览器的Web技术,而移动智 能终端的最大共同点是都具备浏览器,因此WebRTC 几乎可以同时覆盖所有的移动智能...WebRTC技术实现视频通信更为容易,且开发成本 低,绝大多数智能终端均可以使用并实现互通。
基于webrtc实现数据通道P2P私聊群聊、视频、多用户屏幕共享功能源码+使用说明.zip 基于webrtc实现的数据通道(datachannel)实现p2p私聊和群聊,实现多用户屏幕共享和多用户视频,后端纯nodejs实现,简单实用,适合新手...