WebRTC通话最典型的应用场景就是一对一音视频通话,如微信或QQ音视频聊天。通话的过程是比较复杂的,这里我们简化这个流程,把最主要的步骤提取出来,如图所示。
通话原理基本流程
假定通话的双方为Peer-A和Peer-B。双方要建立起通话,主要的步骤如下所示。
1 PeerA与PeerB通过信令服务器进行媒体协商,如双方使用的音视频编码格式。双方交换的媒体数据由SDP协议描述。
2 PeerA与PeerB通过STUN服务器获取到各自自己的网络信息,如IP和端口。然后通过信令服务器转发互相交换各种的网络信息。这样双方就知道对方的IP和端口了,即P2P打洞成功建立直连。这个过程涉及到NAT及ICE协议,具体后面会详细描述。
3 PeerA与PeerB如果没有建立起直连,则通过TURN中转服务器转发音视频数据,最终完成音视频通话。
WebRTC交流群: 425778886
开源地址: https://github.com/kangshaojun