日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WebRTC中的SDP

發(fā)布時(shí)間:2024/3/26 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WebRTC中的SDP 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SDP簡介

在WebRTC的通信過程中,SDP是其中重要的協(xié)議。SDP(Session Description Protocol)全稱是會(huì)話描述協(xié)議。主要用于兩個(gè)會(huì)話實(shí)體之間的媒體協(xié)商。WebRTC引入SDP來描述媒體信息,用于媒體協(xié)商時(shí)決定雙方是否可以進(jìn)行通信,以及用何種方式進(jìn)行通信。SDP作為WebRTC的信令系統(tǒng)的一部分,驅(qū)動(dòng)著WebRTC的運(yùn)轉(zhuǎn)。從這個(gè)角度來說,SDP是WebRTC的靈魂。

標(biāo)準(zhǔn)SDP規(guī)范

標(biāo)準(zhǔn)SDP結(jié)構(gòu)由一個(gè)會(huì)話級(jí)描述和多個(gè)媒體級(jí)描述組成,通常SDP中都會(huì)包含一個(gè)音頻媒體描述和一個(gè)視頻媒體描述。

每條描述信息都是 <type> = <value> 的形式(“=” 兩側(cè)不允許有空格存在。)。其中,<type>是描述的目標(biāo),它由單個(gè)字符構(gòu)成;<value>是對<type>的解釋或約束。會(huì)話和媒體都有各自的<type>,另外還有一些公共的<type>。

常見的<type>如下:

會(huì)話級(jí)
v=(protocol version,協(xié)議版本) o=(owener/creator and session identifier,會(huì)話的創(chuàng)建者) s=(session name,會(huì)話名稱) t=(time the session is active,會(huì)話存活時(shí)間)
媒體級(jí)
m=(media,媒體)
公共
c=(connection information,網(wǎng)絡(luò)信息) a=(attribute,屬性)

這是一個(gè)典型簡化后的的SDP示例:

v=0 o=- 5910110687297165449 2 IN IP4 127.0.0.1 s=- t=0 0 ...//第一個(gè)媒體流,音頻流 m=audio 54797 UDP/TLS/RTP/SAVPF 8 ...//第2個(gè)媒體流,視頻流 m=video 9 UDP/TLS/RTP/SAVPF 125 ...

WebRTC中的SDP

WebRTC對標(biāo)準(zhǔn)SDP規(guī)范做了一些調(diào)整,按功能分成會(huì)話描述和媒體描述。其中,會(huì)話描述屬于標(biāo)準(zhǔn)SDP中的內(nèi)容,通常我們不需要了解它。媒體描述中有WebRTC增加的內(nèi)容,需要了解一下的。媒體描述的內(nèi)容可以分成四個(gè)大類:媒體信息、網(wǎng)絡(luò)描述、安全描述、和服務(wù)質(zhì)量描述。如圖所示:

媒體信息

媒體信息是標(biāo)準(zhǔn)SDP的內(nèi)容,屬于SDP中的核心內(nèi)容。其格式如下所示:

m=<media> <port>/<numbers> <transport> <fmt>
  • <media>:媒體類型,audio、video等。
  • <port>/<numbers>:端口,通常不會(huì)被使用。
  • <transport>:傳輸協(xié)議,UDP、TCP等。
  • <fmt>:媒體數(shù)據(jù)類型,通常為PayloadType列表。其具體含義需要在“a=rtpmap”中說明。

這里有幾個(gè)重要的屬性說明一下:

a=ssrc

ssrc是媒體源的唯一標(biāo)識(shí),每一路媒體流都有唯一的ssrc來標(biāo)識(shí)它。另外,在ssrc這一行中有時(shí)還能看到cname,這是就是該媒體流的別名。ssrc不同的媒體流可以有相同的cname,表示他們屬于同一個(gè)媒體流(比如,重傳流的cname就和原始流的相同)。

a=rtpmap

rtpmap是一張PayloadType與編碼器的映射表。其格式如下所示:

a=rtpmap:<payload type> <encoding name>/<clock rate>[/<encodingparameters>]
  • <payload type>:負(fù)載類型,與m line中的fmt中的對應(yīng)。
  • <encoding name>:端口,編碼器名稱,如VP8,VP9,OPUS等。
  • <clock rate>:采樣率。
  • <encodingparameters>:編碼參數(shù),如音頻的聲道數(shù)信息。
a=fmtp

fmtp用于指定媒體數(shù)據(jù)格式。其格式如下所示:

a=fmtp:<payload type> <format specific parameters>
  • <payload type>:負(fù)載類型,與m line中的fmt中的對應(yīng)。
  • <format specific parameters>:參數(shù)信息,其含義需要參考相關(guān)草案。

網(wǎng)絡(luò)描述

網(wǎng)絡(luò)描述也是標(biāo)準(zhǔn)SDP的內(nèi)容。其中記錄了傳輸媒體數(shù)據(jù)時(shí)使用的網(wǎng)絡(luò)信息。下面幾個(gè)是其中比較重要的屬性:

a=candidate

描述了候選地址信息,是一個(gè)已經(jīng)被廢棄的屬性,但因一些流媒體服務(wù)器上海有使用,所以WebRTC依然做了兼容

a=group:BUNDLE

指明哪些媒體數(shù)據(jù)可以復(fù)用同一個(gè)傳輸通道,以節(jié)約ICE資源。

a=rtcp-mux

指明RTP與RTCP是否復(fù)用同一端口,也是用以節(jié)約ICE資源。

a=rtcp-rsize

指明在用戶帶寬不足時(shí),縮減RTCP非關(guān)鍵包的大小。

a=ice-options

指明WebRTC收集ICE Candidate的策略。一般默認(rèn)為trickle(只要有可用的Candidate就進(jìn)行交換,不需要等待所有的Candidate收集完成才交換)。

安全描述

這部分內(nèi)容是WebRTC新增到SDP規(guī)范中去的。WebRTC的媒體通信提供了一套很好的安全機(jī)制。下面幾個(gè)是其中比較重要的屬性:

a=ice-ufrag和a=ice-pwd

指明ICE的賬號(hào)和密碼,用于驗(yàn)證用戶的合法性。

a=fingerprint

指明DTLS握手時(shí)的證書指紋,用于驗(yàn)證加密證書的有效性。

a=setup:(active/passive/actpass)

指明終端的角色,決定DTLS時(shí)是作為主動(dòng)握手方還是被動(dòng)連接方或是都可以。

服務(wù)質(zhì)量

這部分內(nèi)容也是WebRTC新增到SDP規(guī)范中去的。這個(gè)內(nèi)容只控制WebRTC中很小一部分服務(wù)質(zhì)量的開關(guān)。WebRTC中還包含有非常多的服務(wù)質(zhì)量內(nèi)容。只有以下一個(gè)屬性:

a=rtcp-fb

在媒體協(xié)商過程中,發(fā)起方的SDP中指明要開啟哪些RTCP反饋,而應(yīng)答方則在回復(fù)的SDP中確認(rèn)可以開啟哪些RTCP反饋。例如:

  • nack:丟包重傳
  • fir:申請關(guān)鍵幀
  • transport-cc、goog-remb:擁塞控制算法。

Plan B和Unified Plan

目前,WebRTC中的SDP包含兩種規(guī)格,Plan B和Unified Plan。其中,Plan B是由標(biāo)準(zhǔn)SDP演化而來的,而Unified Plan是用來代替Plan B的新規(guī)格。兩者會(huì)在表達(dá)傳輸多路同類媒體流的時(shí)候格式會(huì)有區(qū)別。

在Plan B中,只有兩個(gè)媒體描述(m line),即音頻媒體描述(m=audio…)和視頻媒體描述(m=video…)。如果有多路同類媒體流則需要通過其媒體描述中的SSRC來區(qū)分。
而在Unified Plan中,每個(gè)媒體流都有一個(gè)媒體描述(m line)。

WebRTC SDP示例

v=0 //sdp版本號(hào),一直為0,rfc4566規(guī)定 o=- 7017624586836067756 2 IN IP4 127.0.0.1 //username,沒有的話使用-代替,7017624586836067756是整個(gè)會(huì)話的編號(hào),2表明會(huì)話版本 s=- //會(huì)話名,沒有的話使用-代替 t=0 0 //兩個(gè)值分別是會(huì)話的起始時(shí)間和結(jié)束時(shí)間,這里都是0表明沒有限制 a=group:BUNDLE audio video data //須要共用一個(gè)傳輸通道傳輸?shù)拿襟w,若是沒有這一行,音視頻,數(shù)據(jù)就會(huì)分別單獨(dú)用一個(gè)udp端口來發(fā)送 a=msid-semantic: WMS h1aZ20mbQB0GSsq0YxLfJmiYWE9CBfGch97C //WMS是WebRTC Media Stream簡稱,這一行定義了本客戶端支持同時(shí)傳輸多個(gè)流,一個(gè)流能夠包括多個(gè) //track,通常定義了這個(gè),后面a=ssrc這一行就會(huì)有msid,mslabel等屬性m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 126 //m=audio說明本會(huì)話包含音頻,9表明音頻使用端口9來傳輸,在webrtc中通常不使用, //若是設(shè)置為0,表明不傳輸音頻,UDP/TLS/RTP/SAVPF是表示用戶來傳輸音頻支持的協(xié)議, //udp、tls、rtp表明使用udp來傳輸rtp包,并使用tls加密; //SAVPF表明使用srtcp的反饋機(jī)制來控制通訊過程, //111 103 104 9 0 8 106 105 13 126表示本會(huì)話音頻支持的編碼,后臺(tái)幾行會(huì)有詳細(xì)補(bǔ)充說明c=IN IP4 0.0.0.0 //這一行表示你要用來接收或者發(fā)送音頻使用的IP地址,webrtc使用ice傳輸,不使用這個(gè)地址 a=rtcp:9 IN IP4 0.0.0.0 //用來傳輸rtcp地地址和端口,webrtc中不使用a=ice-ufrag:khLS a=ice-pwd:cxLzteJaJBou3DspNaPsJhlQ //以上兩行是ice協(xié)商過程當(dāng)中的安全驗(yàn)證信息 a=fingerprint:sha-256 FA:14:42:3B:C7:97:1B:E8:AE:0C2:71:03:05:05:16:8F:B9:C7:98:E9:60:43:4B:5B:2C:28:EE:5C:8F3:17 //以上這行是dtls協(xié)商過程當(dāng)中需要的證書指紋,用來驗(yàn)證DTLS證書的有效性a=setup:actpass //以上這行表明本客戶端在dtls協(xié)商過程當(dāng)中,能夠作客戶端也能夠作服務(wù)端,參考rfc4145 rfc4572 a=mid:audio //在前面BUNDLE這一行中用到的媒體標(biāo)識(shí) a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level //上一行指出我要在rtp頭部中加入音量信息,參考 rfc6464 a=sendrecv //上一行指出我是雙向通訊,另外幾種類型是recvonly,sendonly,inactive a=rtcp-mux //上一行指出rtp,rtcp包使用同一個(gè)端口來傳輸 a=rtpmap:111 opus/48000/2 //a=rtpmap都是對m=audio這一行的媒體編碼補(bǔ)充說明,指出了編碼采用的編號(hào),采樣率,聲道等 a=rtcp-fb:111 transport-cc //以上這行說明opus編碼支持使用rtcp來控制擁塞,參考https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=fmtp:111 minptime=10;useinbandfec=1 //對opus編碼可選的補(bǔ)充說明,minptime表明最小打包時(shí)長是10ms,useinbandfec=1表明使用opus編碼內(nèi)置fec特性 a=rtpmap:103 ISAC/16000 a=rtpmap:104 ISAC/32000 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:106 CN/32000 a=rtpmap:105 CN/16000 a=rtpmap:13 CN/8000 a=rtpmap:126 telephone-event/8000 a=ssrc:18509423 cname:sTjtznXLCNH7nbRw //cname用來標(biāo)識(shí)一個(gè)數(shù)據(jù)源,ssrc當(dāng)發(fā)生沖突時(shí)可能會(huì)發(fā)生變化,可是cname不會(huì)發(fā)生變化,也會(huì)出現(xiàn)在rtcp包中SDEC中, //用于音視頻同步 a=ssrc:18509423 msid:h1aZ20mbQB0GSsq0YxLfJmiYWE9CBfGch97C 15598a91-caf9-4fff-a28f-3082310b2b7a //以上這一行定義了ssrc和WebRTC中的MediaStream,AudioTrack之間的關(guān)系,msid后面第一個(gè)屬性是stream-d,第二個(gè)是track-id a=ssrc:18509423 mslabel:h1aZ20mbQB0GSsq0YxLfJmiYWE9CBfGch97C a=ssrc:18509423 label:15598a91-caf9-4fff-a28f-3082310b2b7am=video 9 UDP/TLS/RTP/SAVPF 100 101 107 116 117 96 97 99 98 //參考上面m=audio,含義相似c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0a=ice-ufrag:khLS a=ice-pwd:cxLzteJaJBou3DspNaPsJhlQ a=fingerprint:sha-256 FA:14:42:3B:C7:97:1B:E8:AE:0C2:71:03:05:05:16:8F:B9:C7:98:E9:60:43:4B:5B:2C:28:EE:5C:8F3:17a=setup:actpass a=mid:video a=extmap:2 urn:ietf:params:rtp-hdrext:toffset a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:4 urn:3gpp:video-orientation a=extmap:5 http://www.ietf.org/id/draft-hol ... de-cc-extensions-01 a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay a=sendrecva=rtcp-mux a=rtcp-rsize a=rtpmap:100 VP8/90000 a=rtcp-fb:100 ccm fir //ccm是codec control using RTCP feedback message簡稱,意思是支持使用rtcp反饋機(jī)制來實(shí)現(xiàn)編碼控制, //fir是Full Intra Request簡稱,意思是接收方通知發(fā)送方發(fā)送幀過來 a=rtcp-fb:100 nack //支持丟包重傳,參考rfc4585 a=rtcp-fb:100 nack pli //支持關(guān)鍵幀丟包重傳,參考rfc4585 a=rtcp-fb:100 goog-remb //支持使用rtcp包來控制發(fā)送方的碼流 a=rtcp-fb:100 transport-cc //參考上面opus a=rtpmap:101 VP9/90000 a=rtcp-fb:101 ccm fir a=rtcp-fb:101 nack a=rtcp-fb:101 nack pli a=rtcp-fb:101 goog-remb a=rtcp-fb:101 transport-cc a=rtpmap:107 H264/90000 a=rtcp-fb:107 ccm fir a=rtcp-fb:107 nack a=rtcp-fb:107 nack pli a=rtcp-fb:107 goog-remb a=rtcp-fb:107 transport-cc a=fmtp:107 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f //h264編碼可選的附加說明 a=rtpmap:116 red/90000 //fec冗余編碼,通常若是sdp中有這一行的話,rtp頭部負(fù)載類型就是116,不然就是各編碼原生負(fù)責(zé)類型 a=rtpmap:117 ulpfec/90000 //支持ULP FEC,參考rfc5109 a=rtpmap:96 rtx/90000 a=fmtp:96 apt=100 //以上兩行是VP8編碼的重傳包rtp類型 a=rtpmap:97 rtx/90000 a=fmtp:97 apt=101 a=rtpmap:99 rtx/90000 a=fmtp:99 apt=107 a=rtpmap:98 rtx/90000 a=fmtp:98 apt=116 a=ssrc-group:FID 3463951252 1461041037 //在webrtc中,重傳包和正常包ssrc是不一樣的,上一行中前一個(gè)是正常rtp包的ssrc,后一個(gè)是重傳包的ssrc a=ssrc:3463951252 cname:sTjtznXLCNH7nbRw a=ssrc:3463951252 msid:h1aZ20mbQB0GSsq0YxLfJmiYWE9CBfGch97C ead4b4e9-b650-4ed5-86f8-6f5f5806346d a=ssrc:3463951252 mslabel:h1aZ20mbQB0GSsq0YxLfJmiYWE9CBfGch97C a=ssrc:3463951252 label:ead4b4e9-b650-4ed5-86f8-6f5f5806346d a=ssrc:1461041037 cname:sTjtznXLCNH7nbRw a=ssrc:1461041037 msid:h1aZ20mbQB0GSsq0YxLfJmiYWE9CBfGch97C ead4b4e9-b650-4ed5-86f8-6f5f5806346d a=ssrc:1461041037 mslabel:h1aZ20mbQB0GSsq0YxLfJmiYWE9CBfGch97C a=ssrc:1461041037 label:ead4b4e9-b650-4ed5-86f8-6f5f5806346dm=application 9 DTLS/SCTP 5000c=IN IP4 0.0.0.0a=ice-ufrag:khLS a=ice-pwd:cxLzteJaJBou3DspNaPsJhlQ a=fingerprint:sha-256 FA:14:42:3B:C7:97:1B:E8:AE:0C2:71:03:05:05:16:8F:B9:C7:98:E9:60:43:4B:5B:2C:28:EE:5C:8F3:17a=setup:actpass a=mid:data a=sctpmap:5000 webrtc-datachannel 1024

總結(jié)

以上是生活随笔為你收集整理的WebRTC中的SDP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 四虎影视免费永久大全 | 黄色a级在线观看 | 日韩一级不卡 | 成人黄色片免费 | 日韩电影一区 | 五十路六十路 | 久久天堂电影 | 岛国av动作片 | 国产精品色婷婷 | 欧美成人免费看 | 日一区二区三区 | a黄色片| 成年人国产视频 | 九热精品视频 | 女优一区二区三区 | 欧美成人免费在线观看视频 | 日韩成人综合网 | 狼人狠狠干 | 中日韩精品视频在线观看 | 又黄又免费的视频 | 天天天色综合 | 亚洲无码精品一区二区三区 | youjizz日本人 | 最新av电影网站 | 国产成人免费 | 日本成人在线播放 | 日本精品999 | 国产乱码一区二区 | 成人性色生活片 | 午夜精品电影 | 久久久久久电影 | 欧美bbbbbbbbbbbb精品 | 六月丁香婷婷激情 | 在线免费观看黄色片 | 波多野结衣99 | 91呦呦 | 国产精品观看 | 妖精视频污| 久久久久久18 | 999久久久精品 | 一区二区三区高清不卡 | 国产成人精品亚洲线观看 | 熟妇大屁股一区二区三区视频 | 日本午夜电影 | 久久无码国产视频 | 欧美日韩精品一区二区三区视频播放 | 欧美成人免费一级 | 国产精品老牛影视 | 99热播| 久久综合五月婷婷 | 香蕉视频在线网站 | h文在线观看 | www.四虎精品 | 中文写幕一区二区三区免费观成熟 | 色眯眯网| 久久精品国产亚洲AV无码麻豆 | 在线看国产 | 操视频网站 | 国产自产一区二区 | 中文字幕+乱码+中文字幕明步 | 亚日韩在线 | 欧美激情精品久久久久久 | 丰满岳乱妇在线观看中字无码 | 丰满少妇高潮久久三区 | 欧洲色网 | 好吊妞一区二区三区 | 一级全黄少妇性色生活片 | 深夜毛片 | 学生孕妇videosex性欧美 | 精品熟女一区二区三区 | 91精品国产91综合久久蜜臀 | jiuse九色 | 亚洲图片小说视频 | 三级精品在线观看 | 一级免费看 | 欧美激情校园春色 | 天天干天天操天天干 | 91精品国产91久久久久福利 | 9i免费看片黄 | 九九人人 | www国产免费 | 爱爱网站视频 | 肉肉av福利一精品导航 | 美女尻逼视频 | 91亚洲国产成人久久精品麻豆 | www.尤物 | 国产一区二区女内射 | 性猛交富婆╳xxx乱大交天津 | 怡红院综合网 | 午夜激情视频网站 | 欧美熟妇另类久久久久久不卡 | 老牛影视av一区二区在线观看 | 欧美肉大捧一进一出免费视频 | 特色特色大片在线 | 男女免费观看视频 | 日本xxxx高潮少妇 | 日本一级片在线播放 | 99久久国产热无码精品免费 | 18禁男女爽爽爽午夜网站免费 |