• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            RTP的FAQ

            轉(zhuǎn)載自:http://if.ustc.edu.cn/~zhouwei/backup/tech/linux/translator/rtpfaq.html

            RTP的FAQ

            翻譯:Searun

            原文:Henning Schulzrinne


            Table of Contents

            RTP是傳輸層協(xié)議還是一種應(yīng)用層協(xié)議?
            RTP不能保證實(shí)時(shí)傳輸,那為什么還叫real-time protocol呢?
            RTP是可靠的嗎?RTP中提供什么樣的機(jī)制用于錯(cuò)誤恢復(fù)?
            RTP可以運(yùn)行于IPv6上嗎?ATM呢?
            RTP可以用在異步網(wǎng)絡(luò)中嗎?
            為什么RTP沒有長度域?
            RTP有沒有固定的封包間隔時(shí)間?
            所有的域都是必須的嗎?
            填充(Padding)是怎樣工作的?
            時(shí)間戳是怎么計(jì)算的呢?
            在多媒體會(huì)議中,初始化的時(shí)間戳是否是關(guān)聯(lián)的?
            RTP的時(shí)間戳和序列號(hào)有什么作用?
            有哪些不同的時(shí)鐘,它們是怎么同步的?
            標(biāo)記比特是做什么用的?
            發(fā)送端的包統(tǒng)計(jì)和字節(jié)統(tǒng)計(jì)有什么用?
            RTCP源端報(bào)告中的RTP時(shí)戳有什么用?
            抖動(dòng)是怎么計(jì)算的?
            什么是會(huì)話帶寬?
            怎樣使用RTCP為雙方呼叫?
            我怎樣注冊(cè)RTP載荷類型?
            現(xiàn)在有那些RTP載荷類型?
            什么是動(dòng)態(tài)載荷類型?
            如果使用H.323或者其他的建立協(xié)議,可否忽略其中的PT(載荷類型)域?
            PT域是用在多路流的復(fù)用技術(shù)上嗎?
            SSRC可以用來區(qū)分同一源的不同流類型嗎?
            接收端需要它們的SSRC標(biāo)志嗎?
            我們?yōu)槭裁床恢苯硬捎肨CP傳輸音頻結(jié)和視頻呢?
            為什么不使用XTP?
            RTP會(huì)話可以重放嗎?
            有RTP的庫嗎?內(nèi)核實(shí)現(xiàn)呢?
            RTP版本1和2之間有什么不同?
            RTP有默認(rèn)端口嗎?
            怎樣在RTP雙向單播會(huì)話中選擇端口?
            防火墻呢?
            語音編碼的質(zhì)量怎么樣?
            是不是所有的編解碼都注冊(cè)呢?
            有沒有辦法讓路由器分離RTP分組?
            有沒有ITU相關(guān)的貢獻(xiàn)?

            RTP是傳輸層協(xié)議還是一種應(yīng)用層協(xié)議?

            RTP協(xié)議有傳輸層協(xié)議的許多特性:它運(yùn)行在端到端系統(tǒng)中,并且提供雙工服務(wù)。但是它和象TCP協(xié)議一樣的傳輸層協(xié)議不一樣,它并不提供任何的可靠性或者錯(cuò)誤恢復(fù)和流量控制機(jī)制。但是,它卻為實(shí)現(xiàn)這樣的控制協(xié)議提供了接口,有點(diǎn)象應(yīng)用層窗體的屬性,具體參加D.Clark和D.Tennenhouse的"Architectural consideration for a new generation of protocols", SIGCOMM'90, Philadelpia。雖然現(xiàn)在大多數(shù)的RTP實(shí)現(xiàn)都是作為應(yīng)用程序,但是這和它的定位無關(guān)。TCP的實(shí)現(xiàn)如果作為應(yīng)用程序的一部分而不是操作系統(tǒng)內(nèi)核,它還是一個(gè)傳輸層協(xié)議。

            RTP不能保證實(shí)時(shí)傳輸,那為什么還叫real-time protocol呢?

            沒有任何一種端到端協(xié)議,包括RTP,都不能提供完全的實(shí)時(shí)服務(wù)。這還需要底層的設(shè)備如路由器和交換機(jī)對(duì)資源的控制。RTP提供了一些特性以適合攜帶實(shí)時(shí)數(shù)據(jù),如時(shí)間戳、同步機(jī)制等。

            RTP是可靠的嗎?RTP中提供什么樣的機(jī)制用于錯(cuò)誤恢復(fù)?

            就現(xiàn)在的定義,RTP還沒有提供恢復(fù)錯(cuò)誤的機(jī)制,這樣的機(jī)制依賴于所攜帶的數(shù)據(jù)。比如,對(duì)于語音數(shù)據(jù),就需要對(duì)低low-bit-rate數(shù)據(jù)進(jìn)行較多的緩存,而對(duì)于其他數(shù)據(jù),則更多的需要重傳(H.261 RTP載荷提供了這樣的機(jī)制)。RTP可能可以提供一些可能的首部信息如序列號(hào)來實(shí)現(xiàn)重傳的錯(cuò)誤恢復(fù)機(jī)制。

            RTP可以運(yùn)行于IPv6上嗎?ATM呢?

            當(dāng)然可以。RTP與底層沒有什么關(guān)系,除非底層提供了分幀。RTP沒有網(wǎng)絡(luò)層的地址,所以當(dāng)?shù)刂犯淖兊臅r(shí)候是影響不到RTP的,而其他的底層提供的服務(wù)如安全或者QoS保證則可以由使用RTP的應(yīng)用程序使用。現(xiàn)在已經(jīng)有直接運(yùn)行在AAL5的RTP實(shí)現(xiàn)了,還有對(duì)AAL2和AAL5運(yùn)載RTP載荷的規(guī)范。有一點(diǎn)需要指出的是,RTCP中的CNAME域現(xiàn)在是基于沒有臺(tái)主機(jī)都有一個(gè)因特網(wǎng)形式的域名的假設(shè)上的。

            RTP可以用在異步網(wǎng)絡(luò)中嗎?

            在異步傳輸網(wǎng)絡(luò)中,一般來說,從用戶到因特網(wǎng)的帶寬是要明顯小于從因特網(wǎng)到用戶的帶寬的。這些網(wǎng)絡(luò)包括ADSL、Cable Modem還有衛(wèi)星網(wǎng)絡(luò)。RTP協(xié)議需要在發(fā)送者發(fā)送了RTCP控制消息以后才可以使用,RTCP消息允許媒體之間進(jìn)行內(nèi)容同步。

            為什么RTP沒有長度域?

            RTP沒有長度域,也就是說分片是由下層協(xié)議來進(jìn)行,并且一個(gè)PDU只能夠攜帶一個(gè)RTP分組,非常典型的下層協(xié)議就是UDP或者AAL5,因?yàn)楝F(xiàn)在很多的應(yīng)用程序都不需要分幀,可以想象加入這點(diǎn)特性對(duì)于處理和帶寬是一個(gè)浪費(fèi),具體可以參閱RTP規(guī)范的RTP over Network and Transport Protocols。如果RTP使用的不是基于消息的協(xié)議或者需要攜帶幾個(gè)RTP分組在一個(gè)PDU中,則需要定義一個(gè)16位或者32位bit的長度域,由載荷和字節(jié)對(duì)齊來共同決定。

            RTP有沒有固定的封包間隔時(shí)間?

            有些實(shí)現(xiàn)假設(shè)語音分組有固定的封裝包的間隔,如20ms,但是這是錯(cuò)誤的,RFC1890建議可以使用固定的值作為默認(rèn)參數(shù),但是具體的實(shí)現(xiàn)必須能夠處理所有的情況。G.711和其他基于采樣協(xié)議的格式就在一個(gè)單位中有不同的時(shí)間。盡管使用123采樣的G.711的RTP包是合法的,但是還需要進(jìn)行適當(dāng)?shù)奶幚怼?/p>

            所有的域都是必須的嗎?

            周期性的就有人提出一個(gè)將12字節(jié)的首部長度域縮減到"RTP lite"版本,他們的依據(jù)是在一些通信特別是語音中根本不需要這樣多的域,而這些通信傳遞的都是小分組,對(duì)于長度的變化是非常敏感的。

            一般的講,最完美的壓縮就是將IP/UDP/RTP的40字節(jié)壓縮到1到2個(gè)字節(jié),但是,這只有在單鏈路的時(shí)延小的連接中使用。

            在大范圍的互聯(lián)中,如PBX互聯(lián),RTP混用更加的高效,因?yàn)樗苊饬薎P和UDP報(bào)文頭,還有RTP頭的長度,此時(shí),每個(gè)channel只需要一到兩個(gè)字節(jié),而平常需要幾十個(gè)channels。

            一個(gè)最小版本的RTP包括一個(gè)序列號(hào)(SN)和載荷類型(PT),兩個(gè)字節(jié)。但是,這樣的選擇有下面一些缺點(diǎn):

            • 沒有了SSRC域,則不能選擇合適的混和器和轉(zhuǎn)換器
            • 對(duì)于頭標(biāo)的減少是有限的,如G.723.1分組,帶有20字節(jié)語音分組的數(shù)據(jù)可以從60字節(jié)壓縮到50字節(jié),單這也只有因特網(wǎng)兩個(gè)月的增長量
            • 在組播中,由于沒有SSRC,報(bào)文會(huì)被丟棄,H.323族中也是如此
            • H.245和SDP用來對(duì)附加的RTP格式進(jìn)行協(xié)商
            • 不是每一個(gè)設(shè)備都支持兩種長度的RTP報(bào)文,需要網(wǎng)關(guān)進(jìn)行轉(zhuǎn)換
            • 由于沒有時(shí)間戳,媒體中間的同步變得非常的困難,無聲的丟棄報(bào)文比頭標(biāo)壓縮更能夠節(jié)省帶寬
            • 許多RTCP的功能需要重新定義,由于它是基于時(shí)間戳和序列號(hào)來進(jìn)行抖動(dòng)計(jì)算、誤差統(tǒng)計(jì)和同步的。

            填充(Padding)是怎樣工作的?

            由于底層傳輸單位定義了報(bào)文的結(jié)尾,應(yīng)用程序一般都可以定位到最后一個(gè)字節(jié)并知道可以填充多少字節(jié)。

            時(shí)間戳是怎么計(jì)算的呢?

            對(duì)于語音來講,時(shí)間戳是封包間隔和采樣速率的乘積的遞增的,比如,如果封包時(shí)間是20ms,而采樣率是8000Hz,則每一塊的時(shí)間戳遞增是160,即使由于某些原因包被丟棄,另外要注意的是,真實(shí)的采樣速率和預(yù)定的速率有一些小的變化,但是發(fā)送著一般沒有可靠的辦法察覺這些區(qū)別。

            對(duì)于視頻來說,時(shí)間戳的生成依賴于應(yīng)用程序是否能夠分辯其幀數(shù)。如果能夠分辯幀速率,則時(shí)間戳可以使用一個(gè)固定的速率增加,如對(duì)于30f/s的視頻,時(shí)間戳就每一幀增加3000,而對(duì)于25f/s的視頻就增加3600f/s,如果一個(gè)幀被幾個(gè)RTP包攜帶,則這些包應(yīng)該有相同的時(shí)間戳。而如果應(yīng)用程序并不能夠識(shí)別幀數(shù)或者采樣是變化的,現(xiàn)在很多編碼器都是這樣做的,那么時(shí)間戳就必須由系統(tǒng)時(shí)鐘來獲得,如gettimeofday()。

            在多媒體會(huì)議中,初始化的時(shí)間戳是否是關(guān)聯(lián)的?

            不,初始化的時(shí)間戳值是隨即選取的,而且每一個(gè)RTP流應(yīng)該無關(guān)(對(duì)于相互獨(dú)立的程序生成的不同的媒體類型,不管是否在一臺(tái)主機(jī)上,這都是或多或少難以避免的)。不同媒體間的同步(如嘴唇同步)是通過RTCP報(bào)告中的NTP時(shí)間戳來實(shí)現(xiàn)的。這個(gè)時(shí)間戳提供了一個(gè)公共的參照把媒體指定的時(shí)間戳和墻上時(shí)間聯(lián)系起來。而這種同步機(jī)制并不是在RTP定義的,盡管如此,一個(gè)可能的處理是定期的交換所有的時(shí)延信息然后由應(yīng)用程序來選擇一個(gè)最大的時(shí)延如果沒有同步的話。

            RTP的時(shí)間戳和序列號(hào)有什么作用?

            時(shí)間戳是用來把接收到的語音和視頻數(shù)據(jù)按照正確的時(shí)間順序提交給上層,而序列號(hào)主要是用來檢查包的丟失。序列號(hào)是遞增的,而時(shí)間戳則遞增一個(gè)所攜帶報(bào)文的時(shí)間,對(duì)于視頻來說,一幀被分割成好幾個(gè)RTP包,則這些包具有相同的時(shí)間戳。對(duì)于某些情況,如攜帶DTMF(RFC 2833)數(shù)據(jù),RTP時(shí)間戳可能是不會(huì)變化的。

            有哪些不同的時(shí)鐘,它們是怎么同步的?

            RFC 1889 定義了一個(gè)在RTP報(bào)文首部中的媒體時(shí)鐘,還有一個(gè)由RTCP時(shí)間戳攜帶的從此時(shí)戳到全局定位時(shí)鐘的映射。

            SR中的NTP時(shí)戳則可以在一個(gè)會(huì)話中同步所有的每天發(fā)送者,如果來自相同的網(wǎng)絡(luò)源,這顯然不是問題,而接受者要同步發(fā)送者,唯一的方法只有廣播。

            經(jīng)驗(yàn)表明:所有其他的交互媒體和交互主機(jī)之間的同步,常常要次于NTP和應(yīng)用規(guī)范。

            標(biāo)記比特是做什么用的?

            對(duì)于語音分組,標(biāo)記比特可以用來指示一個(gè)語音流的開始。在開始的時(shí)候,如果發(fā)現(xiàn)不同的時(shí)鐘或者網(wǎng)絡(luò)延時(shí)的變化,可以比較容易檢查出來。中間的分組則最好能夠連續(xù)發(fā)送,而對(duì)于前面的短暫的時(shí)延是不太敏感的。

            標(biāo)記比特指示一個(gè)指示,如果時(shí)鐘速率是已知的話,對(duì)話的開頭還可以通過比較兩個(gè)分組時(shí)間戳和序列號(hào)的不同來獲得的。

            分組可能不是按照順序到達(dá)的,所以含有標(biāo)記比特的分組比其他分組后到,只要分組延時(shí)超過重排序的時(shí)間,那么接受者就可以適應(yīng)這種延時(shí)。如果不是的話,那么就只有簡單的等待下一個(gè)會(huì)話了。

            發(fā)送端的包統(tǒng)計(jì)和字節(jié)統(tǒng)計(jì)有什么用?

            這些對(duì)于丟包計(jì)算沒有作用,序列號(hào)是完成這個(gè)任務(wù)的。它們只是用來統(tǒng)計(jì)發(fā)送端的包速率和字節(jié)速率。

            RTCP源端報(bào)告中的RTP時(shí)戳有什么用?

            RTP時(shí)戳和NTP時(shí)戳結(jié)合在一起用來識(shí)別一個(gè)流中的絕對(duì)時(shí)間。比如,如果RTCP源端報(bào)告中包含RTP時(shí)戳 1234和NTP時(shí)戳 February 3, 10:14:15,就表示采樣1234發(fā)生在February 3, 10:14:15。

            抖動(dòng)是怎么計(jì)算的?

            如果有幾個(gè)分組攜帶著同樣的時(shí)間戳(如視頻幀),應(yīng)該使用第一個(gè)分組來計(jì)算抖動(dòng)(這可能會(huì)在以后的發(fā)行中規(guī)范)。

            抖動(dòng)是通過時(shí)戳來計(jì)算的,如,音頻流的采樣率是8000Hz,到達(dá)的時(shí)間就會(huì)乘以8000。

            什么是會(huì)話帶寬?

            首先,它不是鏈路帶寬,它不是一個(gè)比例關(guān)系的,即使只有5%的帶寬用于RTCP,大量的會(huì)話也會(huì)將鏈路占滿。其次,鏈路帶寬的定義在不同的網(wǎng)絡(luò)中是有不同的定義的。

            會(huì)話帶寬是指普通的數(shù)據(jù)帶寬乘以IP、UDP和RTP首部(40字節(jié))。比如,對(duì)于一個(gè)64Kb/s的PCM編碼語音,以20ms遞增,則會(huì)話帶寬就是(160+40)/0.02 B/s即80Kb/s,如果有多個(gè)發(fā)送端,則需要把每一個(gè)單獨(dú)相加起來。

            怎樣使用RTCP為雙方呼叫?

            因?yàn)榘l(fā)送RTCP的代價(jià)需要最小(大概5秒鐘一個(gè)包),即使對(duì)于端到端的連接也是有影響的:

            • 使用RTCP,通信雙方都知道對(duì)方接收音頻和視頻的情況;這是很重要的,因?yàn)椋?jīng)常有由于網(wǎng)絡(luò)丟包、延時(shí)或者抖動(dòng)而造成的質(zhì)量下降。一個(gè)特別的例子是在呼叫技術(shù)支持的時(shí)候,技術(shù)支持人員可以在遠(yuǎn)程獲得網(wǎng)絡(luò)的性能
            • RTCP對(duì)于音頻流和視頻流的同步是必須的
            • 對(duì)于音頻的無聲丟失,RTCP可以觀察到并指示
            • SDES信息對(duì)于用戶接口是有用的
            • 許多應(yīng)用需要支持單播和組播,使得具體實(shí)現(xiàn)的附加復(fù)雜度為0。

            我怎樣注冊(cè)RTP載荷類型?

            可以看看 RFC1890 的描述。

            現(xiàn)在有那些RTP載荷類型?

            如果需要知道現(xiàn)在RTP的載荷類型,可以查看由IANA維護(hù)的文件: http://www.iana.org/assignments/rtp-parameters.

            什么是動(dòng)態(tài)載荷類型?

            動(dòng)態(tài)載荷類型被定義在了RTP A/V配置中,不想靜態(tài)的載荷類型,動(dòng)態(tài)載荷類型沒有被IANA所定義,它們?cè)谝粋€(gè)會(huì)話中將一種RTP載荷映射到音頻和視頻上,不同的成員可以使用不同的映射,但是一般都不常用。動(dòng)態(tài)載荷類型的范圍是96到127,它們沒有在標(biāo)準(zhǔn)中被定義,包括:

            • 會(huì)話描述象SDP(使用a:rtpmap參數(shù)),使用聲明和邀請(qǐng)(如SIP),比如 m=audio 12345 RTP/AVP/121 a=rtpmap:121 RT24
            • 其他的信令協(xié)議(盡管如此,H.245好像沒有這樣的機(jī)制,至少在非ITU的協(xié)議中)

            因?yàn)檩d荷類型的空間是有限的,只有常用的編碼才會(huì)定義一個(gè)靜態(tài)的類型,它們是被國際標(biāo)準(zhǔn)化組織定義的音頻或者視頻編碼標(biāo)準(zhǔn),如ITU-T音頻編碼的G系列標(biāo)準(zhǔn)。RTP A/V配置定義了一組靜態(tài)載荷類型。

            如果使用H.323或者其他的建立協(xié)議,可否忽略其中的PT(載荷類型)域?

            一種應(yīng)用程序不應(yīng)該只是支持一種載荷類型,盡管是通過H.245或者其他協(xié)議協(xié)商的。新的機(jī)制應(yīng)該有:

            • 傳輸DTMF數(shù)據(jù)(RFC 2833)
            • 適當(dāng)?shù)脑肼晿?biāo)明
            • 使用冗余的數(shù)據(jù)進(jìn)行錯(cuò)誤恢復(fù)
            • 可以對(duì)網(wǎng)絡(luò)情況進(jìn)行估計(jì)

            可以使用PT域來標(biāo)注可能在應(yīng)用中被忽略的特殊的分組,如果需要的話,需要保證兼容性。但是這個(gè)假設(shè)在應(yīng)用程序忽略所有的PT域的時(shí)候是沒有作用的。

            另外,在組播環(huán)境中,每一個(gè)發(fā)送端使用相同的載荷類型是不好的。

            PT域是用在多路流的復(fù)用技術(shù)上嗎?

            建議使用沒有混用的底層技術(shù),如AAL5上的RTP,其PT域可以區(qū)分不同源發(fā)出的流,但其實(shí)這是一個(gè)不好的規(guī)范。一方面是因?yàn)椴蝗菀自谝粋€(gè)單獨(dú)的流中使用不同的PT(見前面的問題),零位一方面也沒有必要,因?yàn)镾SRC就是被設(shè)計(jì)成可以分別不同的源的。

            SSRC可以用來區(qū)分同一源的不同流類型嗎?

            RTP SSRC是用來標(biāo)記不同的源的,也就是說,在一個(gè)會(huì)議中每一個(gè)發(fā)送者都有一個(gè)SSRC。對(duì)于不同的流媒體,如語音和視頻,對(duì)于不同的SSRC最好使用單獨(dú)的源來發(fā)送。但是在下列情況下是不合適的:

            • 一個(gè)RTP混合器一般是結(jié)合所有的SSRCs,對(duì)于某些RTP會(huì)話和結(jié)合方法,這是合適的,如語音的混合。如果在一個(gè)會(huì)話中有不同的媒體,則SSRCs需要通過附加的信息來隔離不同的媒體,這將使問題變得復(fù)雜。如果不能使用相同的轉(zhuǎn)換器,則對(duì)于終端接收程序來說,也是很復(fù)雜的;
            • 在同一個(gè)RTP會(huì)話中攜帶不同的媒體阻止了使用不同的網(wǎng)絡(luò)媒體和鏈路選路,對(duì)于同步的音頻或者視頻信號(hào),可能并不需要選路等,但是難以想象一個(gè)媒體需要通過低速率低時(shí)延的有線線路和另外一個(gè)媒體能夠容忍長時(shí)延來獲得高的帶寬之間結(jié)合的情況;
            • 在同一個(gè)RTP會(huì)話中攜帶不同的媒體阻止了對(duì)于一組媒體集合的接收,如音頻集合,而視頻超過了可用帶寬,這在單播的時(shí)候不是一個(gè)問題,因?yàn)榘l(fā)送者可以選擇類型,而在組播當(dāng)中,這是應(yīng)該注意的,因?yàn)榭赡苡性S多不同類型的接受者;
            • 在同一個(gè)RTP會(huì)話中攜帶不同的媒體組織了接收端對(duì)于不同媒體之間的單獨(dú)處理;
            • 如果使得SSRCs固定的話,對(duì)于組播是不合適的,因?yàn)槟承┙M播沖突解決方案是需要更改SSRC的。

            接收端需要它們的SSRC標(biāo)志嗎?

            當(dāng)然,每一個(gè)RTP會(huì)話中的參加者都有一個(gè)SSRC值,只要它們需要接收?qǐng)?bào)告。

            我們?yōu)槭裁床恢苯硬捎肨CP傳輸音頻結(jié)和視頻呢?

            如果說只是把音頻和視頻下載下來回放的話,TCP是一個(gè)不錯(cuò)的選擇。如果對(duì)于實(shí)時(shí)要求不是很高的話,具有大的緩沖和好的帶寬的TCP是一個(gè)不錯(cuò)的選擇,如通過www點(diǎn)播,TCP還可以運(yùn)行在如X.25這樣的網(wǎng)絡(luò)上,盡管有些語音或者視頻通信少量的損失都是不可接受的。

            盡管如此,對(duì)于實(shí)時(shí)傳輸來說,象TCP或者其他的可靠性協(xié)議XTP都不適合用來做傳輸協(xié)議,主要有三個(gè)原因:

            • 可靠性的協(xié)議并不適合用來傳輸對(duì)于時(shí)延很敏感的數(shù)據(jù)如實(shí)時(shí)語音或視頻等,當(dāng)發(fā)送者發(fā)現(xiàn)包丟失并且重傳的時(shí)候,至少已經(jīng)過了一個(gè)RTT的時(shí)間,而發(fā)送者要么必須等待重傳的數(shù)據(jù),造成聲音的不連續(xù)或者不按照TCP協(xié)議而丟棄重發(fā)的數(shù)據(jù),而標(biāo)準(zhǔn)的TCP實(shí)現(xiàn)都要求等待重發(fā)的數(shù)據(jù)并處理,所以延時(shí)不斷增加,這對(duì)于實(shí)時(shí)傳輸是不利的;
            • TCP不支持組播;
            • TCP擁塞控制機(jī)制是在發(fā)現(xiàn)丟包的時(shí)候減小窗口,而對(duì)于語音或者視頻來說,是不能夠突然減小速率來餓死接受者的,比如對(duì)于PCM編碼的語音數(shù)據(jù)來說,是不會(huì)超過64kb/s多少的。對(duì)于這些媒體的擁塞控制機(jī)制最好是更改編碼的比特率,比方說根據(jù)RTCP接收?qǐng)?bào)告分組。

            還有一個(gè)不利的地方是TCP和XTP相對(duì)UDP來說具有過多的首部開銷(TCP和XTP3.6是40字節(jié),XTP4.0是32字節(jié),而UDP是8字節(jié)),而且這些協(xié)議還不帶有接收端所需要的時(shí)間戳,所以它們不能夠代替RTP(這些協(xié)議不含有序列號(hào),因?yàn)樗僭O(shè)不會(huì)發(fā)生丟包或者重復(fù)的情況)。

            對(duì)于局域網(wǎng)來說,由于具有足夠的帶寬且只有極少量的錯(cuò)誤,這個(gè)時(shí)候TCP就只是在恢復(fù)少量錯(cuò)誤的時(shí)候有優(yōu)勢(shì),這并沒有什么作用,而且,TCP的競(jìng)爭機(jī)制會(huì)限制源端的初始速率。

            為什么不使用XTP?

            前面的小節(jié)中有許多相同的爭論。關(guān)于RTP和XTP的關(guān)系有許多討論,可能是由于它們都是屬于傳輸層的吧,盡管如此,兩者并不能夠互相代替。XTP是為了可靠或者不可靠的數(shù)據(jù)通信中設(shè)計(jì)一個(gè)可配置和傳輸?shù)膮f(xié)議,而RTP并不包含任何可靠的機(jī)制(盡管可以添加)和象XTP那樣的流控機(jī)制,所以RTP不適合傳輸常規(guī)的需要保證可靠性的數(shù)據(jù)(TCP或XTP更加適合)。對(duì)實(shí)時(shí)傳輸來說,由于延時(shí)問題,重傳一般是禁止的,XTP也是這樣。還有,流控和擁塞控制對(duì)于實(shí)時(shí)傳輸來說都是不合適的,因?yàn)橐话銓?shí)時(shí)數(shù)據(jù)都有相對(duì)穩(wěn)定的比特率,但是,要注意的是,RTP提供了對(duì)于變化比較大的比特率進(jìn)行擁塞控制的機(jī)制,如調(diào)整編碼率等。

            RTP沒有自己的承載協(xié)議,所以需要使用非面向連接的協(xié)議如UDP、TCP或者是面向連接的協(xié)議如XTP、ST-II、ATM(AAL3/4, AAL5)。一般的實(shí)時(shí)應(yīng)用大多使用組播,比如一千多人的講座、報(bào)告,而面向連接的協(xié)議如XTP是難以適應(yīng)這樣的規(guī)模的。

            XTP不含有定時(shí)或者媒體類型信息,而這些是由RTP提供的,XTP也不含有象RTP那樣的直接反饋,所以需要從其他協(xié)議中獲取這些信息。看看現(xiàn)在使用XTP的實(shí)時(shí)傳輸實(shí)現(xiàn),都在XTP和實(shí)時(shí)媒體之間加了一層象RTP數(shù)據(jù)一樣的信息。

            RTP會(huì)話可以重放嗎?

            由于RTCP含有絕對(duì)時(shí)間信息,所以一個(gè)記錄的會(huì)話是不容易直接使用移動(dòng)時(shí)間的方法來重放的。一個(gè)想法就是將時(shí)間重組然后重放數(shù)據(jù)包。SDES信息和NOTE可以用來收集然后重生一個(gè)會(huì)話。NOTE SDES當(dāng)它們可以修改的時(shí)候應(yīng)該可以在合適的時(shí)間插入流中。

            有RTP的庫嗎?內(nèi)核實(shí)現(xiàn)呢?

            由于RTP(特別是數(shù)據(jù)部分)和應(yīng)用程序是緊緊關(guān)聯(lián)的,所以內(nèi)核的實(shí)現(xiàn)沒有什么意義。一些人已經(jīng)實(shí)現(xiàn)了RTP和RTCP的庫。NeVoT, rtpdump, vat, rat 和 vic都含有可以修改的RTP和RTCP處理模塊,要注意的是它們還含有各自的許多代碼(還有其他的一些實(shí)現(xiàn)是依據(jù)老版本的RTP,不要用它們來作為開發(fā))。

            Java Media Framework (JMF),一個(gè)JAVA API,也支持RTP和RTCP。

            現(xiàn)在還沒有對(duì)于RTP的標(biāo)準(zhǔn)的API。

            RTP版本1和2之間有什么不同?

            版本1現(xiàn)在只是歷史意義了,應(yīng)用程序不應(yīng)該根據(jù)它來寫。而且RTP版本2和1也不兼容。如果你關(guān)注這個(gè)的話,可以從Internet draft中找一找版本1的定義。

            RTP有默認(rèn)端口嗎?

            沒有。

            在RTP協(xié)議規(guī)范的端口分配中這樣說明的:

            • RTP使用一個(gè)偶數(shù)的UDP端口,而RTCP則使用大一個(gè)端口的奇數(shù)端口;
            • 應(yīng)用程序可以使用任意的UDP端口對(duì),如由應(yīng)用程序分配并管理。之所以這樣,是因?yàn)閷?duì)于多媒體來說,需要有多個(gè)協(xié)議運(yùn)行在一個(gè)端口,而這在一些操作系統(tǒng)中是不允許的,所以沒有分配固定的端口;
            • 5004和5005作為默認(rèn)的端口對(duì)。如果應(yīng)用程序沒有這樣的默認(rèn)選擇的話可能需要明確的指定。選擇的端口超過5000是因?yàn)樵赨NIX系統(tǒng)中小于1024的端口是特權(quán)端口而1024到5000是由操作系統(tǒng)自動(dòng)分配的。

            組播實(shí)現(xiàn)使用下面的端口范圍:

            Table 1. 

            開始端口 結(jié)束端口 應(yīng)用 優(yōu)先級(jí)
            0 16383 未指定 最低
            16384 32767 語音 最高
            32768 49151 白板 中等
            49152 65535 視頻

            注意:當(dāng)組播速率沒有超過路由器的配置的組播速率限制的時(shí)候,端口是沒有區(qū)別的。

            當(dāng)RTP使用H.323的協(xié)議框架的時(shí)候,由H.225來分配端口,如在SDP和SIP中,由會(huì)議的控制者來選擇端口。

            怎樣在RTP雙向單播會(huì)話中選擇端口?

            每端選擇自己的源地址,也就是說,不會(huì)說Alice發(fā)送語音信息到5000端口,而Bob必須在5000端口接收數(shù)據(jù)。每端只需要簡單的告訴對(duì)方是在哪個(gè)端口監(jiān)聽數(shù)據(jù),如通過SDP。

            RFC1889的第十章說道,在一個(gè)單播會(huì)話中,應(yīng)用必須準(zhǔn)備接收數(shù)據(jù),控制一個(gè)端口對(duì)并且可以將數(shù)據(jù)發(fā)往另外一個(gè)節(jié)點(diǎn)。

            注意SSRCs通常是不相同的。

            防火墻呢?

            端口使用: H.323 TCP 1720 H.235 TCP 大于1024

            語音編碼的質(zhì)量怎么樣?

            請(qǐng)參閱語音編碼部分。

            是不是所有的編解碼都注冊(cè)呢?

            許多舊的,高比特率的編解碼都是不受保護(hù)的,但是,G.723,G.729和GSM都受到了各種專利限制的。如 美國 4,752,956 專利是在GSM中使用的Digital speech coder with baseband residual coding modifies coding using short term fine structure speech data produced by analysers within encoder-multiplexers是被飛利浦公司注冊(cè)的。

            有沒有辦法讓路由器分離RTP分組?

            沒有,如果路由器在會(huì)話建立的時(shí)候沒有對(duì)協(xié)議進(jìn)行過問的話,那么是沒有辦法告訴路由器某個(gè)特定的包是RTP報(bào)文的。但是,如果路由器維持狀態(tài)的話,當(dāng)發(fā)現(xiàn)序列號(hào)緩慢增加(如加1),或者UDP的端口為一對(duì)的時(shí)候,路由器還是可以概率的發(fā)現(xiàn)的。另外,報(bào)文的前兩個(gè)比特是不變的,用來標(biāo)識(shí)RTP報(bào)文,還有,載荷類型一般也是不變的。

            有沒有ITU相關(guān)的貢獻(xiàn)?

            語音和視頻格式和編碼有:

            • MPEG L3 G.711 G.722 G.723 G.723.1 G.726 G.728 G.729 H.261 H.263
            • H.324 在POTS長傳輸Audio和Video,速率在20kb/s以下。

            在ISDN上傳輸?shù)臉?biāo)準(zhǔn)有:

            • H.221 視聽設(shè)備,從64到1920kb/s
            • H.320 電路交換
            • H.323 H.320在LAN中的傳輸

            對(duì)于會(huì)議的控制,管理和數(shù)據(jù)交換,還有一些建議:

            • T.120 一個(gè)簡單的可視化電話建議
            • T.121 常用應(yīng)用模板
            • T.122 多點(diǎn)通信
            • T.123 電話通信應(yīng)用中的協(xié)議棧
            • T.124 基本會(huì)議控制
            • T.125 多點(diǎn)通信服務(wù)協(xié)議規(guī)范
            • T.126 靜態(tài)圖象協(xié)議規(guī)范
            • T.127 多點(diǎn)二進(jìn)制文件傳輸協(xié)議
            • mbus 對(duì)等媒體應(yīng)用協(xié)議

            posted on 2013-09-03 02:32 楊粼波 閱讀(911) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            亚洲国产精品成人久久蜜臀| 国产精品欧美久久久久天天影视| 国产ww久久久久久久久久| 97久久精品人人澡人人爽| 久久人人爽人人爽人人片AV麻豆 | 无码人妻精品一区二区三区久久久 | 伊人久久大香线蕉综合5g| 久久无码专区国产精品发布| 国产精品无码久久综合| 亚洲国产精品成人久久蜜臀| 久久这里只有精品18| 日韩精品久久无码人妻中文字幕 | 久久精品aⅴ无码中文字字幕不卡 久久精品aⅴ无码中文字字幕重口 | 久久精品成人国产午夜| 77777亚洲午夜久久多人| 亚洲国产成人久久综合野外| 久久精品蜜芽亚洲国产AV| 老司机午夜网站国内精品久久久久久久久| 狠狠色丁香婷婷久久综合五月 | 久久久精品国产Sm最大网站| 亚洲一区中文字幕久久| 精品久久久无码人妻中文字幕| 要久久爱在线免费观看| 久久夜色精品国产亚洲| 国产精品美女久久久久网| 久久精品国产秦先生| 久久精品无码一区二区WWW| 久久精品国产黑森林| 久久亚洲国产精品一区二区| 久久永久免费人妻精品下载| 亚洲中文字幕无码久久2020| 伊人久久大香线蕉精品不卡 | 久久亚洲精品无码VA大香大香| 伊人久久大香线蕉精品| 久久精品国产久精国产| 国产91色综合久久免费分享| 精品久久久久久无码专区| 性做久久久久久久| 久久久久亚洲精品无码蜜桃| 精品熟女少妇av免费久久| 久久精品国产亚洲AV电影|