国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SIP協(xié)議-05 SDP協(xié)議

這篇具有很好參考價(jià)值的文章主要介紹了SIP協(xié)議-05 SDP協(xié)議。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

SIP和其他協(xié)議一樣都有這樣的一個(gè)要求:在會(huì)話開頭時(shí)兩端要有充分的信息交流。使用的兩個(gè)協(xié)議就是定義在RFC 2974中的SAP(Session Announcement Protocol )和定義在RFC 2327的SDP (Session Description Protocol)。簡(jiǎn)單來(lái)說(shuō),SAP提供了一種定期宣傳多媒體會(huì)話,向有意參與會(huì)話者傳遞相關(guān)會(huì)話信息的機(jī)制。使用它來(lái)支持Mbone(Internet Multicast Backbone),因此關(guān)興趣的各方都會(huì)清楚的指導(dǎo)目前正在進(jìn)行的一些會(huì)話。而SDP則定義了描述一個(gè)通信會(huì)話的格式,同樣的,它也可以用于不同的傳輸協(xié)議,比如SAP、SIP、HTTP或其他等傳輸協(xié)議。本節(jié)主要介紹 SDP協(xié)議格式。

SDP全稱是Session Description Protocol,翻譯過來(lái)就是描述會(huì)話的協(xié)議。主要用于兩個(gè)會(huì)話實(shí)體之間的媒體協(xié)商。

Sip負(fù)責(zé)建立和釋放會(huì)話,一般來(lái)說(shuō),會(huì)話會(huì)包含相關(guān)的媒體,如視頻和音頻。媒體數(shù)據(jù)是有sdp描述的。Sdp一般不單獨(dú)使用,他與sip配合使用時(shí)會(huì)放到sip協(xié)議的正文(boby)中。會(huì)話建立時(shí),需要媒體協(xié)商,雙方才能確定對(duì)方的媒體能力以及交換媒體數(shù)據(jù)。(這就是sdp的工作)

那為什么要去發(fā)這個(gè)描述文本呢,主要是為了解決參與會(huì)話的各成員之間能力不對(duì)等的問題,如果參加本次通話的成員都支持高質(zhì)量的通話,但是我們沒有去進(jìn)行協(xié)議,為了兼容性,使用的都是普通質(zhì)量的通話格式,這樣就很浪費(fèi)資源了。所以SDP的作用還是很有必要的。

在SIP協(xié)議的包含的內(nèi)容是SDP時(shí),應(yīng)該把Content-Type設(shè)置成application/sdp。SDP協(xié)議于RFC4566中發(fā)布

樣例:
SIP協(xié)議-05 SDP協(xié)議

1 SDP簡(jiǎn)介

SDP是會(huì)話描述協(xié)議的縮寫,是描述流媒體初始化參數(shù)的格式,由IETF作為RFC 4566頒布。流媒體是指在傳輸過程中看到或聽到的內(nèi)容,SDP包通常包括以下信息:
(1)會(huì)話信息

  • 會(huì)話名和目的。
  • 會(huì)話活動(dòng)時(shí)間。

由于參與會(huì)話的資源是受限制的,因此包括以下附加信息是非常有用的。

  • 會(huì)話使用的帶寬信息。
  • 會(huì)話負(fù)責(zé)人的聯(lián)系信息。

(2)媒體信息

  • 媒體類型,例如視頻和音頻。
  • 傳輸協(xié)議,例如RTP/UDP/IP和H.320。
  • 媒體格式,例如H.261視頻和MPEG視頻。
  • 多播地址和媒體傳輸端口(IP多播會(huì)話)。
  • 用于聯(lián)系地址的媒體和傳輸端口的遠(yuǎn)端地址(IP單播會(huì)話)。

SDP描述由許多文本行組成,文本行的格式為<類型>=<值>,<類型>是一個(gè)字母,<值>是結(jié)構(gòu)化的文本串,其格式依<類型>而定。“=”兩側(cè)不允許有空格,一個(gè)值中的多個(gè)參數(shù)用空格分隔。

2 SDP協(xié)議格式

SDP會(huì)話描述由一個(gè)會(huì)話級(jí)描述(session_level description)和多個(gè)媒體級(jí)描述(media_level description)組成。會(huì)話級(jí)(session_level)的作用域是整個(gè)會(huì)話。其位置是從’v=’行開始到第一個(gè)媒體描述為止。媒體級(jí)(media_level)描述是對(duì)單個(gè)的媒體流進(jìn)行描述(例如傳送單個(gè)音頻或者視頻的vlc sdp文件只有短短的幾句話,從m=開始,這其實(shí)就是個(gè)媒體機(jī)描述),其位置是從’m=’行開始到下一個(gè)媒體描述為止。總之,除非媒體部分重載,會(huì)話級(jí)的值是各個(gè)媒體的缺省默認(rèn)值(就是說(shuō)媒體級(jí)描述其實(shí)也是一個(gè)會(huì)話級(jí)描述,只不過沒寫出來(lái)的會(huì)話級(jí)描述參數(shù)都用的缺省值)。

 Session description (會(huì)話名稱和意圖描述)
         v=   (protocol version)    #協(xié)議版本
         o=   (owner/creator and session identifier)   #所有者/創(chuàng)建者和會(huì)話標(biāo)識(shí)符
         s=   (session name)  #會(huì)話名稱
         i=* (session information)  #會(huì)話信息
         u=* (URI of description)  #URI 描述
         e=* (email address) #Email 地址
         p=* (phone number) #電話號(hào)碼
         c=* (connection information - not required if included in all media)  #連接信息 ― 如果包含在所有媒體中,則不需要該字段
         b=* (zero or more bandwidth information lines)  #帶寬信息
One or more time descriptions ("t=" and "r=" lines, see below)
         z=* (time zone adjustments)  # 時(shí)區(qū)調(diào)整
         k=* (encryption key)  # 加密密鑰  k=已定義的方法有:  k=clear:<加密密鑰>密鑰沒有變換;k=base64:<編碼密鑰>已編碼,因?yàn)樗蠸DP禁用的字符;k=uri:<獲得密鑰的URI>;k=prompt。SDP沒有提供密鑰但該會(huì)話或媒體流是要求加密的。
         a=* (zero or more session attribute lines)
Zero or more media descriptions

Time description  # 時(shí)間描述
         t=   (time the session is active)  # 會(huì)話活動(dòng)時(shí)間
         r=* (zero or more repeat times) # 0或多次重復(fù)次數(shù)

Media description, if present # 媒體描述
         m=   (media name and transport address)  # 媒體名稱和傳輸?shù)刂?         i=* (media title)  # 媒體標(biāo)題
         c=* (connection information - optional if included at  session-level)  # 連接信息 — 如果包含在會(huì)話層則該字段可選
         b=* (zero or more bandwidth information lines) #帶寬信息
         k=* (encryption key) # 加密密鑰
         a=* (zero or more media attribute lines)  #0 個(gè)或多個(gè)會(huì)話屬性行

以上帶*號(hào)的是可選的,其余的是必須的。一般順序也按照上面的順序來(lái)排列。
a=*是sdp協(xié)議擴(kuò)展屬性定義,除上面以外的,分解時(shí)其它的都可以扔掉。
a=charset屬性指定協(xié)議使用的字符集。一般的是ISO-10646。

2.1 字段描述

2.1.1 Version(必選)

SDP的版本號(hào),不包括次版本號(hào)。

v=0

2.1.2 origion(必選)

“o=”項(xiàng)對(duì)會(huì)話的發(fā)起者進(jìn)行了描述。

o=<username> <sessionid> <version> <network type> <address type> <address>
o=<用戶名> <session id> <會(huì)話版本> <網(wǎng)絡(luò)類型><地址類型> <地址>
  • <username>
    是用戶的登錄名。如果主機(jī)不支持< username>,則為 -。注意:< username>不能含空格。
  • <session id>
    是一個(gè)數(shù)字串。在整個(gè)會(huì)話中,必須是唯一的。為了確保其唯一,建議使用NTP(Network Time Protocol)timestamp。
  • <version>
    該會(huì)話公告的版本,供公告代理服務(wù)器檢測(cè)同一會(huì)話的若干個(gè)公告哪個(gè)是最新公告.基本要求是會(huì)話數(shù)據(jù)修改后該版本值遞增,建議用NTP時(shí)戳。
  • <networktype>
    網(wǎng)絡(luò)類型,一般為IN,表示”internet”
  • <address type>
    地址類型,一般為IP4
  • <address>
    地址

2.1.3 Session Name(必選)

表示本sdp所描述的session的名稱,沒有的話使用-代替,在整個(gè)會(huì)話中有且只有一個(gè)s=。

s=<sessionname>

2.1.4 Connection Data(可選)

表示媒體連接信息。

一個(gè)會(huì)話聲明中,會(huì)話級(jí)描述中必須有”c=”項(xiàng)或者在每個(gè)媒體級(jí)描述中有一個(gè)”c=”項(xiàng)。可能在會(huì)話級(jí)描述和每個(gè)媒體級(jí)描述中都有”c=”項(xiàng)。

其中值域中以空格分配的兩個(gè)字段分貝是網(wǎng)絡(luò)類型和網(wǎng)絡(luò)地址,以后的RTP流就會(huì)發(fā)到該地址上。

c=<networktype> <address type> <connection address>
  • <network type>
    網(wǎng)絡(luò)類型,一般為IN,表示”internet”
  • <address type>
    地址類型,一般為IP4。
  • <connection address>
    應(yīng)用程序必須處理域名和ip地址兩種情形。單播時(shí),為域名或IP地址,推薦使用域名;多播,為IP地址,且IP后面必須有TTL(取值范圍是0-255),地址和TTL決定了多播包被傳播的范圍。

例:
c=IN IP4 224.2.1.1/127
分層編碼方案是一個(gè)數(shù)據(jù)流被分為多層,接受者能夠通過申請(qǐng)不同層的流選擇流的質(zhì)量(包括帶寬)如下:
<base multicastaddress>/< ttl>/< number of addresses> 如果< number of addresses>沒有給定,則默認(rèn)為1。

由此得出:
c=INIP4 224.2.1.1/127/3 等價(jià)于

c=IN IP4 224.2.1.1/127
c=IN IP4 224.2.1.2/127
c=IN IP4 224.2.1.3/127

2.1.5 Bandwidth(可選)

描述了建議的帶寬,單位kilobits per second(缺省帶寬是千比特每秒)。

b=<bwtype>:<bandwidth-value>

包括兩種CT和AS。CT:ConferenceTotal,總帶寬。AS:Application-SpecificMaximum,單個(gè)媒體帶寬的最大值。
擴(kuò)展機(jī)制:<bwtype>以”X-”開始。建議bwtype越短越好。例b=X-YZ:128

2.1.6 Times(必選), RepeatTimesand Time Zones

描述了會(huì)話的開始時(shí)間和結(jié)束時(shí)間。這個(gè)可以有行,指定多個(gè)不規(guī)則時(shí)間段,如果是規(guī)則的時(shí)間段,則r=屬性可以使用。

t=<start time> <stop time>
  • <start time><stop time>為NTP時(shí)間,單位是秒。
  • 假如<stop time>為零表示過了<start time>時(shí)間后會(huì)話一直持續(xù)。
  • 當(dāng)<start time><stoptime>均為零時(shí)表示持久會(huì)話。

2.1.7 Repeat(可選)

重復(fù)次數(shù)

r=<repeat-interval> <active duration> <offsets from start-time>

在時(shí)間表示里面可以如下表示:

  • d - days (86400 seconds)
  • h - hours (3600 seconds)
  • m - minutes (60 seconds)
  • s - seconds (allowed for completeness)

2.1.8 Media Announcements (必選)

一個(gè)會(huì)話描述包括幾個(gè)媒體描述。一個(gè)媒體描述以”m=”開始到下一個(gè)”m=”結(jié)束。

m=<media> <port> <transport> <fmt list>
  • <media>
    表示媒體類型。有"audio", “video”,“application”(例白板信息), “data”(不向用戶顯示的數(shù)據(jù)) 和"control"(描述額外的控制通道)。

  • <port>
    媒體流發(fā)往傳輸層的端口。取決于c=行規(guī)定的網(wǎng)絡(luò)類型和接下來(lái)的傳輸層協(xié)議:

    • 對(duì)UDP為1024-65535;
    • 對(duì)于RTP為偶數(shù)。

當(dāng)分層編碼流被發(fā)送到一個(gè)單播地址時(shí),需要列出多個(gè)端口。方式如下:m=<media> <port>/<number of ports> <transport> <fmt list>

對(duì)于RTP,偶數(shù)端口被用來(lái)傳輸數(shù)據(jù),奇數(shù)端口用來(lái)傳輸RTCP包。例:m=video49170/2 RTP/AVP 31
端口49170和49171為第一對(duì)RTP/RTCP端口,49172和49173為第二對(duì)的端口。傳輸協(xié)議是RTP/AVP,媒體格式為31(媒體格式是rtp頭中payload參數(shù)對(duì)應(yīng)的)。

  • <transport>
    傳輸協(xié)議,與c=行的地址類型有關(guān)。兩種:

    • RTP/AVP,表示RealtimeTransport Protocol using the Audio/Video profile carried over UDP;
    • UDP
  • <fmt list>
    媒體格式。對(duì)于音頻和視頻就是在RTP Audio/Video Profile定義的負(fù)載類型(payload type)。但第一個(gè)為缺省值。

    分為靜態(tài)綁定和動(dòng)態(tài)綁定:

    • 靜態(tài)綁定即媒體編碼方式與RTP流中的PayloadType(載荷類型)一一對(duì)應(yīng)。
    • 動(dòng)態(tài)綁定即媒體編碼方式(如時(shí)鐘頻率,音頻信道數(shù)等)沒有完全確定,動(dòng)態(tài)編碼都大于95,并且需要在后面使用“a=rtpmap”進(jìn)行說(shuō)明。

    靜態(tài)綁定的例子:
    u_law的PCM編碼單信道Audio,采樣率8KHZ。在RTPAudio/Video profile中對(duì)應(yīng)的payload type為0。即: `

    m=audio 49232 RTP/AVP 0
    

    動(dòng)態(tài)綁定的例子:
    16位線形編碼,采樣率為16KHZ,假如我們希望動(dòng)態(tài)RTP/AVP 類型98表示此此流,寫法如下:

    m=video49232 RTP/AVP 98
    a=rtpmap:98 L16/16000/2
    

有關(guān)RTP載荷類型,請(qǐng)參考:RTP有效負(fù)載(載荷)類型,RTP Payload Type

2.1.9 (可選)

屬性,它用于描述上面的音頻的屬性。

a=<attribute>
a=<attribute>:<value>
2.1.9.1 會(huì)話級(jí)屬性

一般在t之后

  • a=cat:<類別>
    給出點(diǎn)分層次式會(huì)話分類號(hào),供接收方篩選會(huì)話
  • a=keywds:<關(guān)鍵詞>
    供接收方篩選會(huì)話
  • a=tool:<工具名和版本號(hào)>
    創(chuàng)建會(huì)話描述的工具名和版本號(hào)
  • a=recvonly/sendrecv/sendonly
    收發(fā)模式
  • a=type:<會(huì)議類型>
    有:廣播,聚會(huì),主席主持,測(cè)試,H.323
  • a=charset:<字符集>
    顯示會(huì)話名和信息數(shù)據(jù)的字符集
  • a=sdplang:<語(yǔ)言標(biāo)記>
    描述所有語(yǔ)言
  • a=lang:<語(yǔ)言標(biāo)記>
    會(huì)話描述的缺省語(yǔ)言或媒體描述的語(yǔ)言
  • a=framerate:<幀速率>
    1s播放幾個(gè)rtp包,導(dǎo)數(shù)為一個(gè)rtp包承載的數(shù)據(jù)播放的時(shí)間單位s。單位:幀/秒
    音頻的話 a=framerate:50 1byte8000hz20ms=160B,則每個(gè)rtp包的音頻數(shù)據(jù)量為160B 時(shí)間戳增值為160
  • a=quality:<質(zhì)量>
    視頻的建議質(zhì)量(10/5/0)
2.1.9.2 媒體級(jí)屬性

一般在m之后

  • a=ptime:<分組時(shí)間>
    媒體分組的時(shí)長(zhǎng)(單位:秒)
  • a=recvonly/sendrecv/sendonly
    收發(fā)模式
  • a=orient:<白板方向>
    指明白板在屏莫上的方向
  • a=sdplang:<語(yǔ)言標(biāo)記>
    描述所有語(yǔ)言
  • a=lang:<語(yǔ)言標(biāo)記>
    會(huì)話描述的缺省語(yǔ)言或媒體描述的語(yǔ)言
2.1.9.2.1 rtpmap

rtpmap是rtp與map的結(jié)合, 即RTP參數(shù)映射表。對(duì)于音頻流,<編碼參數(shù)>說(shuō)明了音頻的通道數(shù)。通道數(shù)默認(rèn)缺省值為1。對(duì)于視頻流,現(xiàn)階段沒有<編碼參數(shù)>。

a=rtpmap:<payload type> <encoding name>/<clock rate>[/<encodingparameters>]
a=rtpmap:<負(fù)載類型> <編碼名>/<時(shí)鐘速率>[/<編碼參數(shù)>]
  • : 負(fù)載類型, 對(duì)應(yīng)RTP包中的音視頻數(shù)據(jù)負(fù)載類型.
  • : 編碼器名稱, 如VP8, VP9, OPUS.
  • : 采樣率.
  • : 編碼參數(shù), 如音頻是否是雙聲道, 通道數(shù)默認(rèn)缺省值為1(單聲道)。

示例:

m=audio 49230 RTP/AVP 96 97 98 
a=rtpmap:96 L8/8000 
a=rtpmap:97 L16/8000
a=rtpmap:98 L16/11025/2

m=audio 8888 RTP/AVP 0 
a=rtpmap:0 pcma/8000/1 

m=video 1234 RTP/AVP 96
a=rtpmap:96 H264

在rtpmap中,實(shí)驗(yàn)性的編碼方案也可以用。其格式名前一定為”X-”例:一種新的實(shí)驗(yàn)性的被稱為GSMLPC的音頻流,使用的動(dòng)態(tài)負(fù)載類型為99。

m=video 49232 RTP/AVP 99
a=rtpmap:99 X-GSMLPC/8000

*rtpmap 還可以有幾種值:
recvonly,sendrecv,sendonly,inactive 這些值表示媒體流的雙向保持設(shè)定(雙向保持,即A 保持 B, B保持A)。
SIP協(xié)議-05 SDP協(xié)議

A 保持 B: A發(fā)送sendonly B 回復(fù) recvonly
B 保持 A:B發(fā)送inactive A無(wú)消息 (sendonly也可)
A 解除保持:A發(fā)送sendrecv, B無(wú)消息
B解除保持: B發(fā)送sendrecv, A回復(fù)sendrecv
A B可繼續(xù)通話。

如果請(qǐng)求某媒體流的方向?yàn)閟endonly,那么響應(yīng)中對(duì)應(yīng)媒體的方向必須為recvonly;
如果請(qǐng)求某媒體流的方向?yàn)閞ecvonly,那么響應(yīng)中對(duì)應(yīng)媒體的方向必須為sendonly;
如果請(qǐng)求某媒體流的方向?yàn)閟endrecv,那么響應(yīng)中對(duì)應(yīng)媒體的方向可以為sendrecv/sendonly/recvonly/inactive中的一種;
如果請(qǐng)求某媒體流的方向?yàn)閕nactive,那么響應(yīng)中對(duì)應(yīng)媒體的方向必須為inactive;

2.1.9.2.2 fmtp

定義指定格式的附加參數(shù)

a=fmtp:<payload type> <format specific parameters>
  • , 負(fù)載類型
  • 指具體參數(shù).

3 舉例

3.1 示例1

v=0
o=- 49451 3 IN IP4 127.0.0.1
s=Test MPEG Video session
i=Parameters for the session streamed by "testMPEG1or2VideoStreamer"
t=0 0
a=tool:testMPEG1or2VideoStreamer
a=type:broadcast
m=video 1234 RTP/AVP 32
c=IN IP4 239.255.42.42/127
  • 第1行v代表了協(xié)議版本,例子中為0。
  • 第2行o代表所有者/創(chuàng)建者和會(huì)話標(biāo)識(shí)符。
  • 第3行s代表會(huì)話名稱,例子中為Test MPEG Video session,用戶可以自己填寫。
  • 第4行t代表會(huì)話活動(dòng)時(shí)間。
  • 第5行和第6行a代表會(huì)話屬性行,可寫0個(gè)或多個(gè)。
  • 第7行m代表代表媒體信息;video代表是視頻流;1234代表UDP端口號(hào)是1234;RTP/AVP指媒體傳輸協(xié)議使用RTP/AVP;32代表媒體格式使用MPV并且使用90KHz的時(shí)鐘。
  • 關(guān)于RTP/AVP可以在RFC 3551 RTP A/V Profile July 2003找到。
    以下是部分截取:

PT encoding media type clock rate
name (Hz)24 unassigned V
25 CelB V 90,000
26 JPEG V 90,000
27 unassigned V
28 nv V 90,000
29 unassigned V
30 unassigned V
31 H261 V 90,000
32 MPV V 90,000 (這就是例子中的RTP/AVP類型)
33 MP2T AV 90,000
34 H263 V 90,000
35-71 unassigned ?
72-76 reserved N/A N/A
77-95 unassigned ?
96-127 dynamic ?
dyn H263-1998 V 90,000文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-404132.html

  • 第8行c代表連接信息。
    當(dāng)然了還可以加上更多的信息描述,例如b=AS:104857,b代表了帶寬信息。

3.2 示例2

v=0
//sdp版本號(hào),一直為0,rfc4566規(guī)定
o=- 7017624586836067756 2 IN IP4 127.0.0.1
// o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>
//username如何沒有使用-代替,7017624586836067756是整個(gè)會(huì)話的編號(hào),2代表會(huì)話版本,如果在會(huì)話
//過程中有改變編碼之類的操作,重新生成sdp時(shí),sess-id不變,sess-version加1
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端口來(lái)發(fā)送
a=msid-semantic: WMS h1aZ20mbQB0GSsq0YxLfJmiYWE9CBfGch97C
//WMS是WebRTC Media Stream簡(jiǎn)稱,這一行定義了本客戶端支持同時(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說(shuō)明本會(huì)話包含音頻,9代表音頻使用端口9來(lái)傳輸,但是在webrtc中一現(xiàn)在一般不使用,如果設(shè)置為0,代表不
//傳輸音頻,UDP/TLS/RTP/SAVPF是表示用戶來(lái)傳輸音頻支持的協(xié)議,udp,tls,rtp代表使用udp來(lái)傳輸rtp包,并使用tls加密
//SAVPF代表使用srtcp的反饋機(jī)制來(lái)控制通信過程,后臺(tái)111 103 104 9 0 8 106 105 13 126表示本會(huì)話音頻支持的編碼,后臺(tái)幾行會(huì)有詳細(xì)補(bǔ)充說(shuō)明
c=IN IP4 0.0.0.0
//這一行表示你要用來(lái)接收或者發(fā)送音頻使用的IP地址,webrtc使用ice傳輸,不使用這個(gè)地址
a=rtcp:9 IN IP4 0.0.0.0
//用來(lái)傳輸rtcp地地址和端口,webrtc中不使用
a=ice-ufrag:khLS
a=ice-pwd:cxLzteJaJBou3DspNaPsJhlQ
//以上兩行是ice協(xié)商過程中的安全驗(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é)商過程中需要的認(rèn)證信息
a=setup:actpass
//以上這行代表本客戶端在dtls協(xié)商過程中,可以做客戶端也可以做服務(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è)端口來(lái)傳輸
//下面幾行都是對(duì)m=audio這一行的媒體編碼補(bǔ)充說(shuō)明,指出了編碼采用的編號(hào),采樣率,聲道等
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
//以上這行說(shuō)明opus編碼支持使用rtcp來(lái)控制擁塞,參考https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=fmtp:111 minptime=10;useinbandfec=1
//對(duì)opus編碼可選的補(bǔ)充說(shuō)明,minptime代表最小打包時(shí)長(zhǎng)是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用來(lái)標(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-3082310b2b7a
m=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.0
a=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:17
a=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=sendrecv
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:100 VP8/90000
a=rtcp-fb:100 ccm fir
//ccm是codec control using RTCP feedback message簡(jiǎn)稱,意思是支持使用rtcp反饋機(jī)制來(lái)實(shí)現(xiàn)編碼控制,fir是Full Intra Request
//簡(jiǎn)稱,意思是接收方通知發(fā)送方發(fā)送幅完全幀過來(lái)
a=rtcp-fb:100 nack
//支持丟包重傳,參考rfc4585
a=rtcp-fb:100 nack pli
//支持關(guān)鍵幀丟包重傳,參考rfc4585
a=rtcp-fb:100 goog-remb
//支持使用rtcp包來(lái)控制發(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編碼可選的附加說(shuō)明
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-6f5f5806346d
m=application 9 DTLS/SCTP 5000
c=IN IP4 0.0.0.0
a=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:17
a=setup:actpass
a=mid:data
a=sctpmap:5000 webrtc-datachannel 1024

參考資料

  • SDP協(xié)議
  • SDP協(xié)議詳細(xì)介紹
  • 音視頻學(xué)習(xí)筆記-SDP
  • 幾種音頻的sdp
  • sdp文件詳細(xì)總結(jié)
  • SDP協(xié)議介紹

到了這里,關(guān)于SIP協(xié)議-05 SDP協(xié)議的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 2.(1)將兩個(gè)遞增的有序鏈表合并為一個(gè)遞增的有序鏈表。要求結(jié)果鏈表仍使用原來(lái)的兩個(gè)鏈表的存儲(chǔ)空間,不另外占用其他的存儲(chǔ)空間。表中不允許有重復(fù)的數(shù)據(jù)

    2.(1)將兩個(gè)遞增的有序鏈表合并為一個(gè)遞增的有序鏈表。要求結(jié)果鏈表仍使用原來(lái)的兩個(gè)鏈表的存儲(chǔ)空間,不另外占用其他的存儲(chǔ)空間。表中不允許有重復(fù)的數(shù)據(jù)

    代碼實(shí)現(xiàn)的思路: 因?yàn)橐獙蓚€(gè)有序單鏈表合并為一個(gè)遞增的有序單鏈表,所以我們建立了三個(gè)單鏈表La,Lb,Lc,但是要求結(jié)果鏈表仍然使用原來(lái)兩個(gè)鏈表的存儲(chǔ)空間,所以我們用La的頭結(jié)點(diǎn)作為L(zhǎng)c的頭結(jié)點(diǎn),這樣直接操作單鏈表后,輸出La單鏈表和Lc單鏈表結(jié)果是一樣的。然

    2024年02月06日
    瀏覽(32)
  • SIP 協(xié)議的主要流程

    SIP 協(xié)議的主要流程

    目錄 目錄 SIP 協(xié)議的呼叫模型圖 基本呼叫建立流程 基本呼叫拆除流程 經(jīng)過代理的呼叫建立流程 經(jīng)過代理的呼叫拆除流程 SIP 協(xié)議在軟交換 SoftX3000(華為推出的一個(gè)支持sip協(xié)議的交換機(jī)設(shè)備) 流程圖 sip注冊(cè)過程: 注銷sip過程 使用soft3000的呼叫過程 SIP 協(xié)議的呼叫模型圖 ?MG

    2024年02月15日
    瀏覽(23)
  • SIP協(xié)議及其簡(jiǎn)單介紹

    SIP(Session Initiation Protocol,會(huì)話初始化協(xié)議)是一個(gè)應(yīng)用層協(xié)議,用于在互聯(lián)網(wǎng)上創(chuàng)建、修改和終止多媒體會(huì)話。SIP是一個(gè)客戶端/服務(wù)器協(xié)議,允許在不同終端設(shè)備之間建立實(shí)時(shí)通信,包括語(yǔ)音、視頻、消息等。SIP也可以用于呼叫控制和呼叫管理。 SIP協(xié)議的流程如下: SIP客

    2024年02月11日
    瀏覽(20)
  • 數(shù)據(jù)結(jié)構(gòu)2.2,將兩個(gè)非遞減的有序鏈表合并為一個(gè)非遞增的有序鏈表,要求結(jié)果鏈表仍使用原來(lái)兩個(gè)鏈表的存儲(chǔ)空間,不占用其他的存儲(chǔ)空間。表中允許有重復(fù)的數(shù)據(jù)。

    數(shù)據(jù)結(jié)構(gòu)2.2,將兩個(gè)非遞減的有序鏈表合并為一個(gè)非遞增的有序鏈表,要求結(jié)果鏈表仍使用原來(lái)兩個(gè)鏈表的存儲(chǔ)空間,不占用其他的存儲(chǔ)空間。表中允許有重復(fù)的數(shù)據(jù)。

    大概思路:1.先寫出建立鏈表的函數(shù)(creatlist):分配頭節(jié)點(diǎn),尾指針置空。 2.寫出插入節(jié)點(diǎn)的代碼函數(shù):申請(qǐng)一片空間存放要插入的節(jié)點(diǎn),把新插入的節(jié)點(diǎn)置空,令指向鏈表的頭節(jié)點(diǎn)的下一個(gè)指針指向該節(jié)點(diǎn),在把該指針指向新插入的節(jié)點(diǎn)。用if函數(shù)寫出當(dāng)輸入的指小于零時(shí)

    2024年02月05日
    瀏覽(68)
  • 十分鐘配置好Neovim go開發(fā)環(huán)境(其他語(yǔ)言一樣)

    十分鐘配置好Neovim go開發(fā)環(huán)境(其他語(yǔ)言一樣)

    這篇文章的目的是為了分享下我自己的 Neovim 配置。 本人是Golang程序員,最開始使用的IDE是 JetBrains Goland 。有一說(shuō)一這個(gè)ide適配度很高,認(rèn)識(shí)的很多人都使用這個(gè)。但是它也有幾個(gè)對(duì)我來(lái)說(shuō)的缺點(diǎn): 內(nèi)存占用度高,我個(gè)人電腦配置不太跟的上 費(fèi)用較高(DDDD) 去年的時(shí)候換了

    2024年02月15日
    瀏覽(27)
  • LabVIEW背景顏色設(shè)為和其他程序或圖像中一樣

    LabVIEW背景顏色設(shè)為和其他程序或圖像中一樣

    LabVIEW背景顏色設(shè)為和其他程序或圖像中一樣 有時(shí)候LabVIEW背景色要和其他程序或者圖片的顏色保持一致,如果要求不高可以大致設(shè)置一下。如果要求較高,那可以按照如下的方式。 先用PS打開標(biāo)準(zhǔn)圖像,之后用吸管工具選擇圖像上中的點(diǎn),之后就可以在圖像中看到該點(diǎn)的RGB值

    2024年02月08日
    瀏覽(27)
  • 使用python發(fā)送sip協(xié)議的OPTIONS

    使用python發(fā)送sip協(xié)議的OPTIONS

    環(huán)境:Windows10_x64? Python版本 :3.9.2 ? sip協(xié)議提供了OPTIONS請(qǐng)求方法可用于探測(cè)對(duì)端狀態(tài),今天記錄下Windows10環(huán)境下使用python3.9簡(jiǎn)單實(shí)現(xiàn)sip協(xié)議的options功能(udp承載)的過程,并提供示例代碼及相關(guān)資源下載,可從如下渠道獲?。?關(guān)注微信公眾號(hào)(聊聊博文,文末可掃碼)后

    2024年02月10日
    瀏覽(14)
  • 仿`gRPC`功能實(shí)現(xiàn)像調(diào)用本地方法一樣調(diào)用其他服務(wù)器方法

    仿`gRPC`功能實(shí)現(xiàn)像調(diào)用本地方法一樣調(diào)用其他服務(wù)器方法

    在介紹 gRPC 簡(jiǎn)介之前我們先了解一寫概念: 單體架構(gòu) 單體架構(gòu)簡(jiǎn)單理解就是所有的業(yè)務(wù)代碼都在一臺(tái)服務(wù)器上,一旦某個(gè)服務(wù)宕機(jī),會(huì)引起整個(gè)應(yīng)用不可用,隔離性差。只能整體應(yīng)用進(jìn)行伸縮,例如整體打包部署一臺(tái)或多臺(tái)服務(wù)器,浪費(fèi)資源,可伸縮性差。代碼耦合在一起

    2024年02月09日
    瀏覽(24)
  • 解決:java: 警告: 源發(fā)行版 17 需要目標(biāo)發(fā)行版 17(其他版本也適用,思路一樣)

    解決:java: 警告: 源發(fā)行版 17 需要目標(biāo)發(fā)行版 17(其他版本也適用,思路一樣)

    按照網(wǎng)上的教程最終還是不行,經(jīng)過排查,最終發(fā)現(xiàn)是要在File-Project Structure里邊的module里也要選擇對(duì)應(yīng)的JDK版本,網(wǎng)上基本上都是說(shuō)在Source里邊兒改就行,實(shí)際上還要修改依賴?yán)铮碊ependencies)的版本: 修改 Settings -- Build, Execution, Deployment -- Complier -- Java Complier 里邊的 Proj

    2024年02月15日
    瀏覽(23)
  • 不一樣的網(wǎng)絡(luò)協(xié)議-------KCP協(xié)議

    不一樣的網(wǎng)絡(luò)協(xié)議-------KCP協(xié)議

    1、kcp 的協(xié)議特點(diǎn) 1.1、RTO 不翻倍 RTO(Retransmission TimeOut) ,重傳超時(shí)時(shí)間。tcp x 2,kcp x 1.5,提高傳輸速度 1.2、選擇重傳 TCP丟包時(shí)會(huì)全部重傳從該包開始以后的數(shù)據(jù),而KCP選擇性重傳,只重傳真正丟失的數(shù)據(jù)包。 1.3、快速重傳 tcp 重傳模式 ? ?超時(shí)重傳:超過規(guī)定的時(shí)間 RTO 則

    2024年02月08日
    瀏覽(72)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包