WebRTC音视频开发:React+Flutter+Go实战
上QQ阅读APP看书,第一时间看更新

2.1 概述

WebRTC通话最典型的应用场景就是一对一音视频通话,如微信或QQ音视频聊天。通话的过程是比较复杂的,这里我们简化这个流程,把最主要的步骤提取出来,如图2-1所示。

图2-1 通话原理基本流程

假定通话的双方为Peer-A和Peer-B。双方要建立起通话,主要步骤如下所示。

步骤1 媒体协商。Peer-A与Peer-B通过信令服务器进行媒体协商,如双方使用的音视频编码格式。双方交换的媒体数据由SDP(Session Description Protocol,会话描述协议)描述。

步骤2 网络协商。Peer-A与Peer-B通过STUN服务器获取到各自的网络信息,如IP和端口。然后通过信令服务器转发,互相交换各种网络信息。这样双方就知道对方的IP和端口了,即P2P打洞成功建立直连。这个过程涉及NAT及ICE协议。

步骤3 建立连接。Peer-A与Peer-B如果没有建立起直连,则通过TURN中转服务器转发音视频数据,最终完成音视频通话。

关于通话过程所涉及的协议、技术以及相关概念,请查看下面的描述。