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。