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>