作者:刘翰林
日期:2024-11-03
WebRTC(Web Real-Time Communication)是一套支持通过Web浏览器进行实时音视频通话的API和协议。WebRTC前身为GIPS引擎,被Google在2010年5月收购后改名为WebRTC,于2011年6月开源,2012年后,多家主流浏览器chrome、mozilla、opera等提供对WebRTC的支持。
WebRTC规范主要由两块组成,而每块又由多个其他规范构成。
实现应用层音视频P2P的互相通信,需要交换以下信息:
一个典型的WebRTC通信系统组成如下:
以上系统实现了端到端的通信,但是当有第三个客户端C或更多客户端加入会话时,存在以下问题:
因此以上系统几乎不会在音视频会议通话的生产环境上使用。
主流的WebRTC通信系统,会增加媒体服务器作为参与方,每个端都通过媒体服务器进行通信,在服务端可以做合流等各种管控。但由于WebRTC协议缺少对信令协议的规范,不同的WebRTC通信端信令可能各不相同,这就可能会导致不同的WebRTC产品或服务间通信存在兼容性问题。这时WHIP和WHEP就挺身而出了。
RFC规范中描述的消息流如下:
WHIP流程图
+-------------+ +---------------+ +--------------+ +---------------+
| WHIP client | | WHIP endpoint | | Media Server | | WHIP session |
+--+----------+ +---------+-----+ +------+-------+ +--------|------+
| | | |
| | | |
|HTTP POST (SDP Offer) | | |
+------------------------>+ | |
|201 Created (SDP answer) | | |
+<------------------------+ | |
| ICE REQUEST | |
+--------------------------------------->+ |
| ICE RESPONSE | |
|<---------------------------------------+ |
| DTLS SETUP | |
|<======================================>| |
| RTP/RTCP FLOW | |
+<-------------------------------------->+ |
| HTTP DELETE |
+---------------------------------------------------------->+
| 200 OK |
<-----------------------------------------------------------x
Figure 1: WHIP session setup and teardown
WHEP流程图
+-------------+ +---------------+ +--------------+ +---------------+
| WHEP player | | WHEP endpoint | | Media Server | | WHEP session |
+--+----------+ +---------+-----+ +------+-------+ +--------|------+
| | | |
| | | |
|HTTP POST (SDP Offer) | | |
+------------------------>+ | |
|201 Created (SDP answer) | | |
+<------------------------+ | |
| ICE REQUEST | |
+--------------------------------------->+ |
| ICE RESPONSE | |
|<---------------------------------------+ |
| DTLS SETUP | |
|<======================================>| |
| RTP/RTCP FLOW | |
+<-------------------------------------->+ |
| HTTP DELETE |
+---------------------------------------------------------->+
| 200 OK |
<-----------------------------------------------------------x
Figure 1: WHEP session setup and teardown
从以上可以看出,WHIP和WHEP通信过程是非常相似的。他们都明确定义了以下内容:
结合WebRTC通信过程分析,一个简单的WHIP、WHEP系统可以用下图表示: