WebRTC SDP 的協(xié)議解釋。
全局描述
o=- 4611731400430051336 2 IN IP4 127.0.0.1
- 第一個(gè)數(shù)字4611731400430051336是會(huì)話唯一標(biāo)志
- 第二個(gè)數(shù)字2是會(huì)話的版本,當(dāng)會(huì)話有新的協(xié)商或者應(yīng)答時(shí)齐邦,例如(例如保持演侯,編解碼器更改,添加刪除媒體軌道)的時(shí)候
- IN IP4 127.0.0.1這段描述的是創(chuàng)建SDP的網(wǎng)絡(luò)IP和類型伐憾,與協(xié)商無(wú)關(guān)
s=-
- 這個(gè)是文本會(huì)話的名稱勉痴,不常用
t=0 0
- 開(kāi)始和結(jié)束時(shí)間。 都設(shè)置成0树肃,這意味著會(huì)話不受限于特定的時(shí)間
a=group:BUNDLE audio video
- BUNDLE 分組建立了包括在SDP中的多個(gè)媒體線路蒸矛,通常是音頻和視頻之間的關(guān)系。 在WebRTC中,它用于相同的RTP會(huì)話中復(fù)用多個(gè)媒體流雏掠。 在這種情況下斩祭,瀏覽器提供多路復(fù)用音頻和視頻,但是還必須由另一方支持和接受乡话。
a=msid-semantic:WMS lgsCFqt9kN2fVKw5wg3NKqGdATQoltEwOdMS
- 此行給出了在PeerConnection生命期間WebRTC媒體流(WMS)的唯一標(biāo)識(shí)符摧玫。 此標(biāo)識(shí)符將用于屬于特定媒體流(在我們的例子中為音頻和視頻m行)的每個(gè)m行的a = msid屬性中。 這意味著RTP媒體流(由每個(gè)RTP分組中存在的SSRC字段標(biāo)識(shí))屬于該媒體流绑青,并且它是該媒體流的軌道诬像。 它是單個(gè)RTP媒體流到MediaStream WebRTC對(duì)象的顯式關(guān)聯(lián)。 有關(guān)這方面的更多信息闸婴,請(qǐng)參閱draft-ietf-mmusic-msid
音頻
m=audio 58779 UDP / TLS / RTP / SAVPF 111 103 104 9 0 8 106 105 13 126
- m意味著它是一個(gè)媒體行 - 它收集了很多關(guān)于流媒體屬性的信息坏挠。按照這個(gè)順序,它告訴我們:音頻 - 媒體類型將用于會(huì)話(媒體類型在IANA注冊(cè))掠拳,
54278
RTP / SAVPF-傳輸協(xié)議將用于會(huì)話癞揉,最后但并非最不重要
111 103 104 0 8 106 105 13 126-瀏覽器支持媒體格式描述以發(fā)送和接收媒體。
RTP / SAVPF在RFC5124中定義溺欧。簡(jiǎn)而言之喊熟,它需要使用SRTP和SRTCP和RTCP反饋數(shù)據(jù)包。
媒體格式描述姐刁,具有協(xié)議RTP / SAVPF芥牌,給出將要用于不同格式的RTP有效載荷數(shù)。低于96的有效負(fù)載數(shù)由IANA映射到編碼格式聂使。在我們的SDP0地圖到G711U和8到G711A壁拉。大于95的格式號(hào)是動(dòng)態(tài)的,并且有一個(gè)= rtpmap:屬性從RTP有效載荷類型編號(hào)映射到介質(zhì)編碼名稱柏靶。還有alsoa = fmtp:attributes指定格式參數(shù)
c=IN IP4 217.130.243.155
- c是連接行弃理。 此行給出您希望發(fā)送和接收實(shí)時(shí)流量的IP。 因?yàn)镮CE在WebRTC中是強(qiáng)制性的屎蜓,所以c線中的IP將不被使用痘昌。
ICE Candidates
重點(diǎn)來(lái)了
a=candidate:1467250027 1 udp 2122260223 192.168.0.196 46243 typ host generation 0
a=candidate:1467250027 2 udp 2122260222 192.168.0.196 56280 typ host generation 0
- UDP上的RTP的主機(jī)候選 - 在這個(gè)ICE線路中,瀏覽器給出它的主機(jī)候選 - 瀏覽器在計(jì)算機(jī)上偵聽(tīng)的接口的IP炬转。瀏覽器可以在該IP上接收/發(fā)送SRTP和SRTCP辆苔,以防有遠(yuǎn)程對(duì)等體的一些候選者的IP可見(jiàn)性。例如扼劈,如果其他計(jì)算機(jī)在同一LAN上驻啤,將使用主機(jī)候選。udp后面的數(shù)字 - 2122260223 - 是候選者的優(yōu)先級(jí)荐吵。注意骑冗,主機(jī)候選者的優(yōu)先級(jí)高于其他候選者赊瞬,因?yàn)槭褂弥鳈C(jī)候選者在資源使用方面更有效。第一行(component = 1)用于RTP沐旨,第二行(component = 2)用于RTCP
a=candidate:435653019 1 tcp 1845501695 192.168.0.196 0 typ host tcptype active generation 0
a=candidate:435653019 2 tcp 1845501695 192.168.0.196 0 typ host tcptype active generation 0
- RTP over TCP的主機(jī)候選 - 這些線路與之前的兩個(gè)ICE線路相同森逮,但只是TCP傳輸。 請(qǐng)注意磁携,優(yōu)先級(jí)是較低的 - 因?yàn)門CP不是實(shí)時(shí)媒體傳輸?shù)淖罴堰x擇褒侧。
- RTCP over TCP的主機(jī)候選。
a=candidate:1853887674 1 udp 1518280447 47.61.61.61 36768 typ srflx raddr 192.168.0.196 rport 36768 generation 0
a=candidate:1853887674 2 udp 1518280447 47.61.61.61 36768 typ srflx raddr 192.168.0.196 rport 36768 generation 0
- 反射候選RTP over UDP - 這里我們有服務(wù)器反思候選人谊迄。 請(qǐng)注意闷供,它們的優(yōu)先級(jí)低于主機(jī)候選。
- 反射候選人RTCP over UDP - 這里我們有服務(wù)器反思候選人统诺。 請(qǐng)注意歪脏,它們的優(yōu)先級(jí)低于主機(jī)候選。
a=candidate:750991856 2 udp 25108222 237.30.30.30 51472 typ relay raddr 47.61.61.61 rport 54763 generation 0
a=candidate:750991856 1 udp 25108223 237.30.30.30 58779 typ relay raddr 47.61.61.61 rport 54761 generation 0
RTP over UDP中繼候選 - 接下來(lái)我們有中繼候選粮呢。這些候選者從TURN服務(wù)器獲得婿失,當(dāng)創(chuàng)建對(duì)等連接時(shí),TURN服務(wù)器必須被提供啄寡。注意豪硅,這里的優(yōu)先級(jí)低于主機(jī)和反射候選者(25108222更高),因此僅當(dāng)主機(jī)和反射候選者之間沒(méi)有IP連接時(shí)挺物,才使用中繼懒浮。
RTCP over UDP的中繼候選。
ICE Parameters
a=ice-ufrag:Oyef7uvBlwafI3hT
a=ice-pwd:T0teqPLNQQOf+5W+ls+P2p16
- 一旦ICE候選者被交換识藤,驗(yàn)證過(guò)程開(kāi)始砚著,其中兩個(gè)瀏覽器試圖使用所提供的候選者連接。 在該過(guò)程中使用ice-ufrag和ice-pwd憑證痴昧,為了避免被攻擊稽穆,未經(jīng)驗(yàn)證的連接無(wú)法建立會(huì)話。
a=fingerprint:sha-256 49:66:12:17:0D:1C:91:AE:57:4C:C6:36:DD:D5:97:D2:7D:62:C9:9A:7F:B9:A3:F4:70:03:E7:43:91:73:23:5E
- 該指紋是在DTLS-SRTP協(xié)商中使用的證書(shū)的散列函數(shù)(在這種情況下使用sha-256)的結(jié)果赶撰。 此行在信令(假定是信任的)和在DTLS中使用的證書(shū)之間創(chuàng)建綁定舌镶,如果指紋不匹配,則應(yīng)該拒絕會(huì)話扣囊。
a=sendrecv
- 這一行說(shuō)乎折,瀏覽器愿意在這個(gè)會(huì)話中發(fā)送和接收音頻绒疗。 其他值可以是sendonly侵歇,recvonly和inactive,用于實(shí)現(xiàn)不同的場(chǎng)景吓蘑,如將呼叫保持惕虑。