WebRTC的SDP

摘要

本文描述了WebRTC标准中的会话描述协议(SDP)。

两个浏览器端的WebRTC应用在开始传输音视频数据之前,需要借助RTCPeerConnection对象建立会话。

建立会话的主要目的如下:

1.描述会话名称、会话时长。

2.协商音视频编解码标准(如:Opus、G722、VP8)、音频采样率和通道数、音频帧时长等。

3.协商网络通信质量反馈和改善策略,如:采用什么拥塞控制算法、是否开启NACK、FEC等。

4.协商网络安全机制和相关参数,如:ICE用户名和密码,DTLS证书指纹,DTLS用户角色等。

5.收集网络传输Candidate,构建CandidatePair列表。

6.根据CandidatePair列表和用户配置的优先级规则,逐个尝试建立连接,直到首个连接建立成功。

在会话相关参数尚未协商确定之前,WebRTC是不知道如何传输音视频数据的。

WebRTC如何描述会话相关参数呢?答案就是采用SDP。

SDP是一个可扩展的规范,WebRTC中的SDP是在标准SDP规范基础上扩展而成的。

标准SDP规范

SDP是Session Description Protocol(会话描述协议)的缩写。

SDP描述由许多文本行组成,文本行的格式定义为:<key>=<value>[CRLF]

<key>是一个英文字母,<value>是结构化的文本串,<value>的格式依<key>而定。

WebRTC中的SDP规范

WebRTC对标准SDP规范进行了扩展,先后定义了两套规范:PlanB和UnifiedPlan。

这两套规范主要差异是:在PlanB中同一类m只能出现一次,同一类m的多个实例需要借助cname别名来区分;而在UnifiedPlan中,每种类型的m(比如:m=video)可以出现多个,每个实例必须单独描述。UnifiedPlan对媒体的描述比PlanB更清晰。

SDP的核心功能

SDP的核心就两个功能:会话描述和媒体描述。

会话描述常用关键词:v、o、s、t。

媒体描述常用关键词:m、a。

m全称为media(媒体),用于描述一个独立的媒体(可理解为MediaStreamTrack)。

a全称为attribute(属性),用于补充描述m关键词描述的媒体的压缩编码和网络传输参数。

其它常用关键词及其用途如下图所示:

ORTC规范

许多学者认为在新潮的WebRTC API中采用古老的SDP来描述会话不太合适。

以微软为首的ORTC(Object Real-Time Communication)组织提出了全新WebRTC API标准ORTC。

ORTC采用了面向对象的设计,将接口分散到Sender、Receiver、Transport等对象中。

在ORTC中,WebRTC原有的一些概念(如:SDP、Offer/Answer、RTCPeerConnection等)都消失了。

总结

本文介绍了SDP在WebRTC标准中的作用,展望了WebRTC API标准的未来。

猜你喜欢

转载自blog.csdn.net/bigwave2000/article/details/132258189