WebRTC通话原理-媒体协商

作者: 亢少军
首先两个客户端(Peer-A和Peer-B)想要创建连接,一般来说需要有一个双方都能访问的服务器来帮助它们交换连接所需要的信息。有了交换数据的中间人之后,它们首先要交换的数据是Session Description Protocol(SDP),这里面描述了连接双方想要建立怎样的连接。
彼此要了解对方支持的媒体格式。比如,Peer­A端可支持VP8、H264多种编码格式,而Peer­B端支持VP9、H264,要保证二端都正确的编解码,最简单的办法就是取它们的交集H264。如下图所示。
WebRTC通话原理-媒体协商_第1张图片

有一个专门的协议称为SDP(Session Description Protoco),可用于描述上述这类信息,在WebRTC中,参与视频通讯的双方必须先交换SDP信息,这样双方才能知根知底,而交换SDP的过程,也称为“媒体协商”。
SDP从哪来,一般来说,在建立连接之前连接双方需要先通过API来指定自己要传输什么数据(Audio,Video,DataChannel),以及自己希望接受什么数据,然后Peer-A调用CreateOffer()方法,获取offer类型的SessionDescription,通过公共服务器传递给Peer-B,同样,Peer-B通过调用CreateAnswer(),获取answer类型的SessionDescription,通过公共服务器传递给Peer-A。 在这个过程中无论是哪一方创建Offer(Answer)都无所谓,但是要保证连接双方创建的SessionDescription类型是相互对应的。Peer-A=Answer Peer-B=Offer | Peer-A=Offer Peer-B=Answer。如下图所示。

WebRTC通话原理-媒体协商_第2张图片
图中信令服务器可以用来交换双方SDP信息,一般是通过创建Socket连接进行交互处理。你可以使用Node.js技术也可以使用Golang或其他技术,只要能交换双方的SDP数据即可。

WebRTC交流群: 425778886
开源地址: https://github.com/kangshaojun
在这里插入图片描述

你可能感兴趣的:(WebRTC)