SDP(Session Description Protocol)会话描述协议,是一种会话描述格式,不是传输协议(例如RTP,RSTP是传输协议),SDP协议是也是基于文本的协议。SDP很早就用于流媒体中来描述媒体信息,例如RTSP的SDP文件,现在的WebRTC也是用SDP来描述媒体信息的。
在WebRTC中,SDP主要用来描述:
?设备支持的媒体能力,包括编解码器等
?ICE候选地址
?流媒体传输协议
SDP协议基于文本,格式非常简单,可扩展性比较强。它由多个行组成,每一行都为键值格式<类型>=<值> (形式如: t=v),<类型>是一个字母,<值>是结构化的文本串,其格式依<类型>而定。
<type>=<value>
其中,type
表示属性名,value
表示属性值,具体格式与type
有关。
下面是一个SDP的样本:
v=0
o=mike 1234567890 1234567890 IN IP4 host.domain.com
s=
c=IN IP4 host.domain.com
t=0 0
m=audio 8860 RTP/AVP 0
a=rtpmap:0 PCMU/8000
m=video 8861 RTP/AVP 31
a=rtpmap:31 H261/90000
其中: 1. v=代表协议版本号 2. o=代表会话发起者,包括username、sessionId等 3. s=代表session名称,为唯一字段 4. c=代表连接信息,包括网络类型、地址类型、地址等 5. t=代表会话时间,包括开始/结束时间,均为0表示持久会话 6. m=代表媒体描述,包括媒体类型、端口、传输协议、媒体格式等 7. a=代表附加属性,此处用于对媒体协议进行扩展 |
m的格式如下:
m=<media> <port> <proto> <fmt> ...
m=<media> <port>/<number of ports> <proto> <fmt> ...
其中:<media>可以是,"audio","video", "text", "application" and "message"。<port>是媒体传送的端口号,它依赖于c=和<proto>。<proto> 可以是,udp,RTP/AVP和RTP/SAVP。
其它一些格式如下:
v=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>c=<nettype> <addrtype> <connection-address>b=<bwtype>:<bandwidth>t=<start-time> <stop-time>r=<repeat-interval> <active duration> <offsets from start-time>z=<adjustment time> <offset> <adjustment time> <offset> ....
k=<method>
k=<method>:<encryption key>
a=<attribute>
a=<attribute>:<value>