天天看點

Webrtc 中的SDP協定字段解釋

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>

           

繼續閱讀