全球定位: webrtc音视频通话(一)搭建turn服务器 webrtc音视频通话(二)简单音视频通话 webrtc音视频通话(三)整合websocket
git地址
https://gitee.com/chr_demo/web-rtc.git
这里不详细介绍websocket,只针对websocket整合rtc。如果不会websokcet的,可以转到 springboot整合websocket(一)简单聊天室
1、简单说下webrtc的流程
webrtc是P2P通信,也就是实际交流的只有两个人,而要建立通信,这两个人需要交换一些信息来保证通信安全。而且,webrtc必须通过ssh加密,也就是使用https协议、wss协议。
借用一幅图
1.1 创建端点的解析
以下解析不包括websockt,只针对stun做解析。与上图略有不同
-
首先,Client A创建端点(Create PeerConnection),并添加音视频流(Add Streams)。接下来通知Client B,让Client B也创建一个端点。
-
Client B收到通知后,Client B创建端点(Create PeerConnection),并添加音视频流(Add Streams),
-
接下来,Client B创建一个用于answer的SDP对象(Create Answer),保存并发送给Client A。
-
Client A收到用于answer的SDP后,保存下来。
-
然后, Client A创建一个用于offer的SDP对象(Create Office),保存并发送给Client B。
-
最后,Client B保存收到的用于offer的SDP对象
以上步骤完成之后:
1、rtc会自动收集Candidate信息,并通过回调函数通知你,用于交换Candidate信息。
2、交换完Candidate信息后,P2P连接就建立好了。并通过回调函数,将远程视频流给你
1.2 交换Candidate信息
Candidate信息是交换完SDP对象之后,自动收集的信息。在创建端点(PeerConnection)的时候,添加回调函数(onIceCandidate)
创建回调函数(onIceCandidate)
将Candidate信息发送给另一端(a发给b,b发给a)
保存发过来的 Candidate信息(addIceCandidate)。注意是保存发过来的,不是保存自己的!!!
交换完Candida