都是我自己的感悟,有可能不对哦~~~
webrtc浏览器之间建立联系的流程图:
http://w3c.github.io/webrtc-pc/#call-flow-browser-to-browser
webrtc提供了三个接口:
MediaStream
(akagetUserMedia
)RTCPeerConnection
RTCDataChannel
getUserMedia用来获取接口调用者本地摄像头和麦克采集的音频,视频。
RTCPeerConnection两端打洞,建立联系,传输视频,音频数据。
对于一个peerconnectoin,发送端和客户端可绑定到自己的一路音视频上。如果某一端有多个摄像头那就要创建多个peerconnection。
getUserMedia成功调用之后再createOffer,offer的意义在于告诉对方,大爷我允许你访问我的摄像头和麦克采集的音视频流啦。getUserMedia成功调用之后一定要再createAnswer一次,这样对方才能访问到你这端的音视频流。
stepx这个例子被叫端第一次createAnswer的时候getUserMedia还没有走到成功的回调,所以主叫端收到第一个answer的时候并不知道被叫端的音视频信息而无法访问。
RTCDataChannel这个接口由RTCPeerConnection来建立,感觉这个接口的暴露就是为了让调用者可以用建好的p2p通道来传除视频和音频外的其它数据。所以如果不传其他数据的话,貌似不用调这个接口。