用一句簡單的話總結(jié):RTSP發(fā)起/終結(jié)流媒體、RTP傳輸流媒體數(shù)據(jù) 、RTCP對(duì)RTP進(jìn)行控制,同步。
之所以以前對(duì)這幾個(gè)有點(diǎn)分不清,是因?yàn)镃TC標(biāo)準(zhǔn)里沒有對(duì)RTCP進(jìn)行要求,因此在標(biāo)準(zhǔn)RTSP的代碼中沒有看到相關(guān)的部分。而在私有RTSP的代碼中,有關(guān)控制、同步等,是在RTP Header中做擴(kuò)展定義實(shí)現(xiàn)的。
另外,RFC3550可以看作是RFC1889的升級(jí)文檔,只看RFC3550即可。
RTP
Real-time Transport Protocol)是用于Internet上針對(duì)多媒體數(shù)據(jù)流的一種傳輸層協(xié)議。RTP協(xié)議詳細(xì)說明了在互聯(lián)網(wǎng)上傳遞音頻和視頻的標(biāo)準(zhǔn)數(shù)據(jù)包格式。RTP協(xié)議常用于流媒體系統(tǒng)(配合RTCP協(xié)議),視頻會(huì)議和一鍵通(Push to Talk)系統(tǒng)(配合H.323或SIP),使它成為IP電話產(chǎn)業(yè)的技術(shù)基礎(chǔ)。RTP協(xié)議和RTP控制協(xié)議RTCP一起使用,而且它是建立在UDP協(xié)議上的。
RTP 本身并沒有提供按時(shí)發(fā)送機(jī)制或其它服務(wù)質(zhì)量(QoS)保證,它依賴于低層服務(wù)去實(shí)現(xiàn)這一過程。 RTP 并不保證傳送或防止無序傳送,也不確定底層網(wǎng)絡(luò)的可靠性。 RTP 實(shí)行有序傳送, RTP 中的序列號(hào)允許接收方重組發(fā)送方的包序列,同時(shí)序列號(hào)也能用于決定適當(dāng)?shù)陌恢茫纾涸谝曨l解碼中,就不需要順序解碼。
RTP 由兩個(gè)緊密鏈接部分組成: RTP ― 傳送具有實(shí)時(shí)屬性的數(shù)據(jù);RTP 控制協(xié)議(RTCP) ― 監(jiān)控服務(wù)質(zhì)量并傳送正在進(jìn)行的會(huì)話參與者的相關(guān)信息。
RTCP
實(shí)時(shí)傳輸控制協(xié)議(Real-time Transport Control Protocol或RTP Control Protocol或簡寫RTCP)是實(shí)時(shí)傳輸協(xié)議(RTP)的一個(gè)姐妹協(xié)議。RTCP為RTP媒體流提供信道外(out-of-band)控制。RTCP本身并不傳輸數(shù)據(jù),但和RTP一起協(xié)作將多媒體數(shù)據(jù)打包和發(fā)送。RTCP定期在流多媒體會(huì)話參加者之間傳輸控制數(shù)據(jù)。RTCP的主要功能是為RTP所提供的服務(wù)質(zhì)量(Quality of Service)提供反饋。
RTCP收集相關(guān)媒體連接的統(tǒng)計(jì)信息,例如:傳輸字節(jié)數(shù),傳輸分組數(shù),丟失分組數(shù),jitter,單向和雙向網(wǎng)絡(luò)延遲等等。網(wǎng)絡(luò)應(yīng)用程序可以利用RTCP所提供的信息試圖提高服務(wù)質(zhì)量,比如限制信息流量或改用壓縮比較小的編解碼器。RTCP本身不提供數(shù)據(jù)加密或身份認(rèn)證。SRTCP可以用于此類用途。
SRTP & SRTCP
安全實(shí)時(shí)傳輸協(xié)議(Secure Real-time Transport Protocol或SRTP)是在實(shí)時(shí)傳輸協(xié)議(Real-time Transport Protocol或RTP)基礎(chǔ)上所定義的一個(gè)協(xié)議,旨在為單播和多播應(yīng)用程序中的實(shí)時(shí)傳輸協(xié)議的數(shù)據(jù)提供加密、消息認(rèn)證、完整性保證和重放保護(hù)。它是由David Oran(思科)和Rolf Blom(愛立信)開發(fā)的,并最早由IETF于2004年3月作為RFC 3711發(fā)布。
由于實(shí)時(shí)傳輸協(xié)議和可以被用來控制實(shí)時(shí)傳輸協(xié)議的會(huì)話的實(shí)時(shí)傳輸控制協(xié)議(RTP Control Protocol或RTCP)有著緊密的聯(lián)系,安全實(shí)時(shí)傳輸協(xié)議同樣也有一個(gè)伴生協(xié)議,它被稱為安全實(shí)時(shí)傳輸控制協(xié)議(Secure RTCP或SRTCP);安全實(shí)時(shí)傳輸控制協(xié)議為實(shí)時(shí)傳輸控制協(xié)議提供類似的與安全有關(guān)的特性,就像安全實(shí)時(shí)傳輸協(xié)議為實(shí)時(shí)傳輸協(xié)議提供的那些一樣。
在使用實(shí)時(shí)傳輸協(xié)議或?qū)崟r(shí)傳輸控制協(xié)議時(shí),使不使用安全實(shí)時(shí)傳輸協(xié)議或安全實(shí)時(shí)傳輸控制協(xié)議是可選的;但即使使用了安全實(shí)時(shí)傳輸協(xié)議或安全實(shí)時(shí)傳輸控制協(xié)議,所有它們提供的特性(如加密和認(rèn)證)也都是可選的,這些特性可以被獨(dú)立地使用或禁用。唯一的例外是在使用安全實(shí)時(shí)傳輸控制協(xié)議時(shí),必須要用到其消息認(rèn)證特性。
RTSP
RTSP(Real Time Streaming Protocol)是用來控制聲音或影像的多媒體串流協(xié)議,并允許同時(shí)多個(gè)串流需求控制,傳輸時(shí)所用的網(wǎng)絡(luò)通訊協(xié)定并不在其定義的范圍內(nèi),服務(wù)器端可以自行選擇使用TCP或UDP來傳送串流內(nèi)容,它的語法和運(yùn)作跟HTTP 1.1類似,但并不特別強(qiáng)調(diào)時(shí)間同步,所以比較能容忍網(wǎng)絡(luò)延遲。而前面提到的允許同時(shí)多個(gè)串流需求控制(Multicast),除了可以降低服務(wù)器端的網(wǎng)絡(luò)用量,更進(jìn)而支持多方視訊會(huì)議(Video Conference)。 因?yàn)榕cHTTP1.1的運(yùn)作方式相似,所以代理服務(wù)器《Proxy》的快取功能《Cache》也同樣適用于RTSP,并因RTSP具有重新導(dǎo)向功能,可視實(shí)際負(fù)載情況來轉(zhuǎn)換提供服務(wù)的服務(wù)器,以避免過大的負(fù)載集中于同一服務(wù)器而造成延遲。
RTSP 和RTP的關(guān)系
________________________________________________________________________________
RTP:實(shí)時(shí)傳輸協(xié)議(Real-time Transport Protocol)
RTP/RTCP是實(shí)際傳輸數(shù)據(jù)的協(xié)議
RTP傳輸音頻/視頻數(shù)據(jù),如果是PLAY,Server發(fā)送到Client端,如果是RECORD,可以由Client發(fā)送到Server
整個(gè)RTP協(xié)議由兩個(gè)密切相關(guān)的部分組成:RTP數(shù)據(jù)協(xié)議和RTP控制協(xié)議(即RTCP)
RTSP:實(shí)時(shí)流協(xié)議(Real Time Streaming Protocol,RTSP)
RTSP的請(qǐng)求主要有DESCRIBE,SETUP,PLAY,PAUSE,TEARDOWN,OPTIONS等,顧名思義可以知道起對(duì)話和控制作用
RTSP的對(duì)話過程中SETUP可以確定RTP/RTCP使用的端口,PLAY/PAUSE/TEARDOWN可以開始或者停止RTP的發(fā)送,等等
RTCP:
RTP/RTCP是實(shí)際傳輸數(shù)據(jù)的協(xié)議
RTCP包括Sender Report和Receiver Report,用來進(jìn)行音頻/視頻的同步以及其他用途,是一種控制協(xié)議
以下是每個(gè)協(xié)議的概要介紹:
一、RTP數(shù)據(jù)協(xié)議
RTP數(shù)據(jù)協(xié)議負(fù)責(zé)對(duì)流媒體數(shù)據(jù)進(jìn)行封包并實(shí)現(xiàn)媒體流的實(shí)時(shí)傳輸,每一個(gè)RTP數(shù)據(jù)報(bào)都由頭部(Header)和負(fù)載(Payload)兩個(gè)部分組成,其中頭部前12個(gè)字節(jié)的含義是固定的,而負(fù)載則可以是音頻或者視頻數(shù)據(jù)。RTP數(shù)據(jù)報(bào)的頭部格式如圖1所示:
其中比較重要的幾個(gè)域及其意義如下:
CSRC記數(shù)(CC):表示CSRC標(biāo)識(shí)的數(shù)目。CSRC標(biāo)識(shí)緊跟在RTP固定頭部之后,用來表示RTP數(shù)據(jù)報(bào)的來源,RTP協(xié)議允許在同一個(gè)會(huì)話中存在多個(gè)數(shù)據(jù)源,它們可以通過RTP混合器合并為一個(gè)數(shù)據(jù)源。例如,可以產(chǎn)生一個(gè)CSRC列表來表示一個(gè)電話會(huì)議,該會(huì)議通過一個(gè)RTP混合器將所有講話者的語音數(shù)據(jù)組合為一個(gè)RTP數(shù)據(jù)源。
負(fù)載類型(PT):標(biāo)明RTP負(fù)載的格式,包括所采用的編碼算法、采樣頻率、承載通道等。例如,類型2表明該RTP數(shù)據(jù)包中承載的是用ITU G.721算法編碼的語音數(shù)據(jù),采樣頻率為8000Hz,并且采用單聲道。
序列號(hào):用來為接收方提供探測數(shù)據(jù)丟失的方法,但如何處理丟失的數(shù)據(jù)則是應(yīng)用程序自己的事情,RTP協(xié)議本身并不負(fù)責(zé)數(shù)據(jù)的重傳。
時(shí)間戳:記錄了負(fù)載中第一個(gè)字節(jié)的采樣時(shí)間,接收方能夠時(shí)間戳能夠確定數(shù)據(jù)的到達(dá)是否受到了延遲抖動(dòng)的影響,但具體如何來補(bǔ)償延遲抖動(dòng)則是應(yīng)用程序自己的事情。
從RTP數(shù)據(jù)報(bào)的格式不難看出,它包含了傳輸媒體的類型、格式、序列號(hào)、時(shí)間戳以及是否有附加數(shù)據(jù)等信息,這些都為實(shí)時(shí)的流媒體傳輸提供了相應(yīng)的基礎(chǔ)。RTP協(xié)議的目的是提供實(shí)時(shí)數(shù)據(jù)(如交互式的音頻和視頻)的端到端傳輸服務(wù),因此在RTP中沒有連接的概念,它可以建立在底層的面向連接或面向非連接的傳輸協(xié)議之上;RTP也不依賴于特別的網(wǎng)絡(luò)地址格式,而僅僅只需要底層傳輸協(xié)議支持組幀(Framing)和分段(Segmentation)就足夠了;另外RTP本身還不提供任何可靠性機(jī)制,這些都要由傳輸協(xié)議或者應(yīng)用程序自己來保證。在典型的應(yīng)用場合下,RTP一般是在傳輸協(xié)議之上作為應(yīng)用程序的一部分加以實(shí)現(xiàn)的,如圖2所示:
二、RTCP控制協(xié)議
RTCP控制協(xié)議需要與RTP數(shù)據(jù)協(xié)議一起配合使用,當(dāng)應(yīng)用程序啟動(dòng)一個(gè)RTP會(huì)話時(shí)將同時(shí)占用兩個(gè)端口,分別供RTP和RTCP使用。RTP本身并不能為按序傳輸數(shù)據(jù)包提供可靠的保證,也不提供流量控制和擁塞控制,這些都由RTCP來負(fù)責(zé)完成。通常RTCP會(huì)采用與RTP相同的分發(fā)機(jī)制,向會(huì)話中的所有成員周期性地發(fā)送控制信息,應(yīng)用程序通過接收這些數(shù)據(jù),從中獲取會(huì)話參與者的相關(guān)資料,以及網(wǎng)絡(luò)狀況、分組丟失概率等反饋信息,從而能夠?qū)Ψ?wù)質(zhì)量進(jìn)行控制或者對(duì)網(wǎng)絡(luò)狀況進(jìn)行診斷。
RTCP協(xié)議的功能是通過不同的RTCP數(shù)據(jù)報(bào)來實(shí)現(xiàn)的,主要有如下幾種類型:
SR:發(fā)送端報(bào)告,所謂發(fā)送端是指發(fā)出RTP數(shù)據(jù)報(bào)的應(yīng)用程序或者終端,發(fā)送端同時(shí)也可以是接收端。
RR:接收端報(bào)告,所謂接收端是指僅接收但不發(fā)送RTP數(shù)據(jù)報(bào)的應(yīng)用程序或者終端。
SDES:源描述,主要功能是作為會(huì)話成員有關(guān)標(biāo)識(shí)信息的載體,如用戶名、郵件地址、電話號(hào)碼等,此外還具有向會(huì)話成員傳達(dá)會(huì)話控制信息的功能。
BYE:通知離開,主要功能是指示某一個(gè)或者幾個(gè)源不再有效,即通知會(huì)話中的其他成員自己將退出會(huì)話。
APP:由應(yīng)用程序自己定義,解決了RTCP的擴(kuò)展性問題,并且為協(xié)議的實(shí)現(xiàn)者提供了很大的靈活性。
RTCP數(shù)據(jù)報(bào)攜帶有服務(wù)質(zhì)量監(jiān)控的必要信息,能夠?qū)Ψ?wù)質(zhì)量進(jìn)行動(dòng)態(tài)的調(diào)整,并能夠?qū)W(wǎng)絡(luò)擁塞進(jìn)行有效的控制。由于RTCP數(shù)據(jù)報(bào)采用的是多播方式,因此會(huì)話中的所有成員都可以通過RTCP數(shù)據(jù)報(bào)返回的控制信息,來了解其他參與者的當(dāng)前情況。
在一個(gè)典型的應(yīng)用場合下,發(fā)送媒體流的應(yīng)用程序?qū)⒅芷谛缘禺a(chǎn)生發(fā)送端報(bào)告SR,該RTCP數(shù)據(jù)報(bào)含有不同媒體流間的同步信息,以及已經(jīng)發(fā)送的數(shù)據(jù)報(bào)和字節(jié)的計(jì)數(shù),接收端根據(jù)這些信息可以估計(jì)出實(shí)際的數(shù)據(jù)傳輸速率。另一方面,接收端會(huì)向所有已知的發(fā)送端發(fā)送接收端報(bào)告RR,該RTCP數(shù)據(jù)報(bào)含有已接收數(shù)據(jù)報(bào)的最大序列號(hào)、丟失的數(shù)據(jù)報(bào)數(shù)目、延時(shí)抖動(dòng)和時(shí)間戳等重要信息,發(fā)送端應(yīng)用根據(jù)這些信息可以估計(jì)出往返時(shí)延,并且可以根據(jù)數(shù)據(jù)報(bào)丟失概率和時(shí)延抖動(dòng)情況動(dòng)態(tài)調(diào)整發(fā)送速率,以改善網(wǎng)絡(luò)擁塞狀況,或者根據(jù)網(wǎng)絡(luò)狀況平滑地調(diào)整應(yīng)用程序的服務(wù)質(zhì)量。
三、RTSP實(shí)時(shí)流協(xié)議
作為一個(gè)應(yīng)用層協(xié)議,RTSP提供了一個(gè)可供擴(kuò)展的框架,它的意義在于使得實(shí)時(shí)流媒體數(shù)據(jù)的受控和點(diǎn)播變得可能??偟恼f來,RTSP是一個(gè)流媒體表示協(xié)議,主要用來控制具有實(shí)時(shí)特性的數(shù)據(jù)發(fā)送,但它本身并不傳輸數(shù)據(jù),而是必須依賴于下層傳輸協(xié)議所提供的某些服務(wù)。RTSP可以對(duì)流媒體提供諸如播放、暫停、快進(jìn)等操作,它負(fù)責(zé)定義具體的控制消息、操作方法、狀態(tài)碼等,此外還描述了與RTP間的交互操作(RFC2326)。
RTSP在制定時(shí)較多地參考了HTTP/1.1協(xié)議,甚至許多描述與HTTP/1.1完全相同。RTSP之所以特意使用與HTTP/1.1類似的語法和操作,在很大程度上是為了兼容現(xiàn)有的Web基礎(chǔ)結(jié)構(gòu),正因如此,HTTP/1.1的擴(kuò)展機(jī)制大都可以直接引入到RTSP中。
由RTSP控制的媒體流集合可以用表示描述(Presentation Description)來定義,所謂表示是指流媒體服務(wù)器提供給客戶機(jī)的一個(gè)或者多個(gè)媒體流的集合,而表示描述則包含了一個(gè)表示中各個(gè)媒體流的相關(guān)信息,如數(shù)據(jù)編碼/解碼算法、網(wǎng)絡(luò)地址、媒體流的內(nèi)容等。
雖然RTSP服務(wù)器同樣也使用標(biāo)識(shí)符來區(qū)別每一流連接會(huì)話(Session),但RTSP連接并沒有被綁定到傳輸層連接(如TCP等),也就是說在整個(gè)RTSP連接期間,RTSP用戶可打開或者關(guān)閉多個(gè)對(duì)RTSP服務(wù)器的可靠傳輸連接以發(fā)出RTSP 請(qǐng)求。此外,RTSP連接也可以基于面向無連接的傳輸協(xié)議(如UDP等)。
RTSP協(xié)議目前支持以下操作:
檢索媒體:允許用戶通過HTTP或者其它方法向媒體服務(wù)器提交一個(gè)表示描述。如表示是組播的,則表示描述就包含用于該媒體流的組播地址和端口號(hào);如果表示是單播的,為了安全在表示描述中應(yīng)該只提供目的地址。
邀請(qǐng)加入:媒體服務(wù)器可以被邀請(qǐng)參加正在進(jìn)行的會(huì)議,或者在表示中回放媒體,或者在表示中錄制全部媒體或其子集,非常適合于分布式教學(xué)。
添加媒體:通知用戶新加入的可利用媒體流,這對(duì)現(xiàn)場講座來講顯得尤其有用。與HTTP/1.1類似,RTSP請(qǐng)求也可以交由代理、通道或者緩存來進(jìn)行處理。
RTMP VS TCP&UDP
(2011-08-30 10:57:53)
轉(zhuǎn)載▼標(biāo)簽:
雜談分類:
音視頻1, TCP為點(diǎn)對(duì)點(diǎn)的協(xié)議,這意味著各個(gè)客戶需要分開客戶機(jī)/服務(wù)器鏈接,因而無法在網(wǎng)絡(luò)級(jí)實(shí)現(xiàn)對(duì)多個(gè)客戶機(jī)的數(shù)據(jù)廣播。如果有一個(gè)數(shù)據(jù)流必須同時(shí)被傳送到多個(gè)客戶機(jī),服務(wù)器必須傳送數(shù)據(jù)流的副本到各個(gè)客戶機(jī),TCP能夠根據(jù)網(wǎng)絡(luò)帶寬和擁擠程度動(dòng)態(tài)地調(diào)節(jié)傳送速度并重新發(fā)送丟失的數(shù)據(jù)包,這樣雖然保證了數(shù)據(jù)傳輸?shù)目煽啃?,但是?duì)服務(wù)器資源耗費(fèi)較大,在數(shù)據(jù)流大的場合難以保證數(shù)據(jù)流傳輸?shù)膶?shí)時(shí)性。
2, UDP為不可靠傳輸協(xié)議,在發(fā)送端,UDP傳送數(shù)據(jù)的速度僅僅是受應(yīng)用程序生成數(shù)據(jù)的速度,計(jì)算機(jī)的能力和傳輸帶寬的限制;在接收端,uDP把每個(gè)消息段放在隊(duì)列中,應(yīng)用程序每次從隊(duì)列中讀一個(gè)消息段。
UDP協(xié)議不需要維護(hù)連接狀態(tài),也不認(rèn)為每個(gè)數(shù)據(jù)包都必須到達(dá)接受端,因此網(wǎng)絡(luò)負(fù)荷比TCP小,傳輸速度也要比TCP快;但在網(wǎng)絡(luò)越擁擠時(shí),越有更多的數(shù)據(jù)包丟失。
3, RTMP協(xié)議是一個(gè)專門為高效傳輸視頻,音頻和數(shù)據(jù)而設(shè)計(jì)的協(xié)議。它通過建立一個(gè)二進(jìn)制TCP連接或者連接HTTP隧道實(shí)現(xiàn)實(shí)時(shí)的視頻和聲音傳輸。
共享對(duì)象是RTMP數(shù)據(jù)中一種比較重要的數(shù)據(jù)類型,任何客戶端改變數(shù)據(jù)時(shí),共享對(duì)象能夠及時(shí)更新服務(wù)器端的數(shù)據(jù),這樣,每個(gè)客戶端都能夠及時(shí)了解到數(shù)據(jù)的變化。
RTMP比傳統(tǒng)媒介服務(wù)器流出的媒介協(xié)議支持更多。它支持可能包含聲音,影像和腳本數(shù)據(jù)從服務(wù)器到客戶和從客戶到服務(wù)器多條線路的動(dòng)態(tài)傳輸。RTMP對(duì)聲音、影像和腳本數(shù)據(jù)分別處理。
聲音和視頻數(shù)據(jù)被分開地緩沖在服務(wù)器中。如果聲音數(shù)據(jù)在聲音緩沖器中達(dá)到某一極限,所有在緩沖器中的數(shù)據(jù)將被丟掉,并且最近到達(dá)的數(shù)據(jù)被允許開始收集在緩沖中并被送到各個(gè)客戶。視頻數(shù)據(jù)被以相似的方式處理,不同是當(dāng)新的關(guān)鍵幀到達(dá)時(shí),緩沖器中數(shù)據(jù)才被清除。在丟掉舊的幀數(shù)據(jù)時(shí),如果發(fā)現(xiàn)客戶端的數(shù)據(jù)有誤,則將新舊兩個(gè)不同的幀進(jìn)行擬合。
RTMP對(duì)數(shù)據(jù)給予不同的優(yōu)先級(jí)別。在實(shí)時(shí)交談中,聲音是最重要的,影像給予低優(yōu)先級(jí),而腳本數(shù)據(jù)被給予的優(yōu)先權(quán)介于聲音和影像中間。
RTMP協(xié)議可以創(chuàng)建多個(gè)數(shù)據(jù)流,但是每個(gè)數(shù)據(jù)流只能有一個(gè)方向。
使用RTMP可以構(gòu)建這樣的一個(gè)系統(tǒng),客戶端可以同時(shí)與RTMP服務(wù)器和應(yīng)用服務(wù)器進(jìn)行交互,使得服務(wù)端的負(fù)荷得以分散,雖然在這種改進(jìn)的系統(tǒng)結(jié)構(gòu)中,RTMP服務(wù)器的性能要求比較高。
RTMP:Real Time Messaging Protocol(實(shí)時(shí)消息傳送協(xié)議)
RTMP(the Real-time Messaging Protocol)協(xié)議作為客戶端和服務(wù)器端的傳輸協(xié)議,這是一個(gè)專門為高效傳輸視頻、音頻和數(shù)據(jù)而設(shè)計(jì)的 TCP/IP 協(xié)議,使用 RTMP 協(xié)議傳輸?shù)臄?shù)據(jù)是未經(jīng)加密的,包括用戶名和密碼等認(rèn)證信息。
類別:Adobe
RTP:Real-Time Transport protocol(實(shí)時(shí)傳輸協(xié)議)
實(shí)時(shí)傳輸協(xié)議(RTP)為數(shù)據(jù)提供了具有實(shí)時(shí)特征的端對(duì)端傳送服務(wù),如在組播或單播網(wǎng)絡(luò)服務(wù)下的交互式視頻音頻或模擬數(shù)據(jù)。應(yīng)用程序通常在 UDP 上運(yùn)行 RTP 以便使用其多路結(jié)點(diǎn)和校驗(yàn)服務(wù);這兩種協(xié)議都提供了傳輸層協(xié)議的功能。但是 RTP 可以與其它適合的底層網(wǎng)絡(luò)或傳輸協(xié)議一起使用。
類別:IETF
來源:RFC 3550