SDP 做为SIP协议数据包中的一部分,封装在SIP invite消息中,当接收方收到sip invite信令时,就会经过SIP invite消息中的SDP来获取发送方相关会话信息,反之亦然,接收方收到SIP invite后,做为响应,也会将本身的SDP封装在SIP invite消息中并发回到发送方,发送方就能够经过SDP来获取接收方的会话信息和媒体信息,最终完成媒体会话协商。
并发
在RCS中,SDP和SIP invite信令的使用在各个RCS 子服务中基本都是同样的,如下是RCS中Vdieo sharing 服务的邀请中的SDP组包及字段描述:ide
发送方:字体
Send INVITE:spa
(Accept-Contact: +g.3gpp.cs-voice; explicit)视频
m=video portUE-A RTP/AVP 98 96 a=sendonlyip
a=rtpmap:98 H264/90000ci
a=fmtp:98 profile-level-id=42C00D; packetization-mode=0it
a=rtpmap:96 H263-2000/90000io
a=framesize:96 176-144class
SDP中数据包信息主要分为两部分,一部分是会话信息,一部分是媒体信息,上述黑体字符就是SDP中媒体信息,接收到SIP invte数据包后,经过识别解析SDP中的“v”开头的数据能够获得会话信息,如上加粗字体,解析以“m”开头的数据就能够获得媒体信息,各字段描述以下:
接收方:
200 OK Response:
(Contact: +g.3gpp.cs-voice)
m=video portUE-B RTP/AVP 98 96 a=recvonly
b=AS:800
a=rtpmap:98 H264/90000
a=fmtp:98 profile-level-id=42C00D; packetization-mode=0
a=rtpmap:96 H263-2000/90000
a=framesize:96 176-144
解析方法和发送方同样,描述以下:
在VS中,SDP主要是描述双方所支持的视频格式和编解码信息,通常状况下,发送方和接收方的会话描述是同样的,有的设备肯能会支持不少视频格式,如
a=fmtp:98 profile-level-id=42C00D; packetization-mode=0
a=rtpmap:96 H263-2000/90000
a=framesize:96 176-144
可能会包含不少个,可是最终的媒体协商会选出它们所共同支持的,当前环境下质量最好的媒体格式来做为本次会话的标准。
注意:在媒体协商中,双方SDP中所携带的视频编解码器和视频宽高必须是同样的,不然,协商失败,会话终止。
更多请参考:PRD-IR74和RFC4566。