关键词:WebRTC三个主要接口,MediaStream,RTCDataChannel
一、WebRTC一对一
1.1 WebRTC三个主要接口
1)MediaStream:通过MediaStream的API能够通过设备的摄像头及话筒获得视频、音频的同步流
2)RTCPeerConnection:RTCPeerConnection是WebRTC用于构建点对点之间稳定、高效的流传输的组件
3)RTCDataChannel:RTCDataChannel使得浏览器之间(点对点)建立一个高吞吐量、低延时的信道,用于传输任意数据
1.2 分别对上述三个接口进行简单介绍
1)MediaStream(getUserMedia)
MediaStream API为WebRTC提供了从设备的摄像头、话筒获取视频、音频流数据的功能。
2)RTCPeerConnection
WebRTC使用RTCPeerConnection来在浏览器之间传递流数据,这个流数据通道是点对点的,不需要经过服务器进行中转。但是这并不意味着我们能抛弃服务器,我们仍然需要它来为我们传递信令(signaling)来建立这个信道。WebRTC没有定义用于建立信道的信令的协议:信令并不是RTCPeerConnection API的一部分。
这些session信息的交换应该在点对点的流传输之前就全部完成,一个大致的架构图如下:
注:通过服务器建立信道
这里再次重申,就算WebRTC提供浏览器之间的点对点信道进行数据传输,但是建立这个信道,必须有服务器的参与。WebRTC需要服务器对其进行四方面的功能支持:
a)用户发现以及通信
b)信令传输
c)NAT/防火墙穿越
d)如果点对点通信建立失败,可以作为中转服务器
注:在RTCPeeConnection中,使用ICE框架来保证RTCPeerConnection能实现NAT穿越
两个兼容:
//兼容浏览器的getUserMedia写法
var getUserMedia = (navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia);
//兼容浏览器的PeerConnection写法
var PeerConnection = (window.PeerConnection ||
window.webkitPeerConnection00||
window.webkitRTCPeerConnection||
window.mozRTCPeerConnection);
3)RTCDataChannel
既然能建立点对点的信道来传递实时的视频、音频数据流,为什么不能用这个信道传一点其他数据呢?RTCDataChannel API就是用来干这个的,基于它我们可以在浏览器之间传输任意数据。DataChannel是建立在PeerConnection上的,不能单独使用。
2016年11月21日星期一