php视频流传输,视频流传输协议RTP/RTCP/RTSP/HTTP的区别
用一句簡單的話總結(jié):RTSP發(fā)起/終結(jié)流媒體、RTP傳輸流媒體數(shù)據(jù)、RTCP對RTP進行控制,同步。之所以以前對這幾個有點分不清,是因為CTC標(biāo)準(zhǔn)里沒有對RTCP進行要求,因此在標(biāo)準(zhǔn)RTSP的代碼中沒有看到相關(guān)的部分。而在私有RTSP的代碼中,有關(guān)控制、同步等,是在RTP Header中做擴展定義實現(xiàn)的。另外,RFC3550可以看作是RFC1889的升級文檔,只看RFC3550即可。RTP:實時傳輸協(xié)議(Real-time Transport Protocol)RTP/RTCP是實際傳輸數(shù)據(jù)的協(xié)議RTP傳輸音頻/視頻數(shù)據(jù),如果是PLAY,Server發(fā)送到Client端,如果是RECORD,可以由Client發(fā)送到Server整個RTP協(xié)議由兩個密切相關(guān)的部分組成:RTP數(shù)據(jù)協(xié)議和RTP控制協(xié)議(即RTCP)RTSP:實時流協(xié)議(Real Time Streaming Protocol,RTSP)RTSP的請求主要有DESCRIBE,SETUP,PLAY,PAUSE,TEARDOWN,OPTIONS等,顧名思義可以知道起對話和控制作用RTSP的對話過程中SETUP可以確定RTP/RTCP使用的端口,PLAY/PAUSE/TEARDOWN可以開始或者停止RTP的發(fā)送,等等RTCP:RTP/RTCP是實際傳輸數(shù)據(jù)的協(xié)議RTCP包括Sender Report和Receiver Report,用來進行音頻/視頻的同步以及其他用途,是一種控制協(xié)議以下是每個協(xié)議的概要介紹:一、RTP數(shù)據(jù)協(xié)議RTP數(shù)據(jù)協(xié)議負責(zé)對流媒體數(shù)據(jù)進行封包并實現(xiàn)媒體流的實時傳輸,每一個RTP數(shù)據(jù)報都由頭部(Header)和負載(Payload)兩個部分組成,其中頭部前12個字節(jié)的含義是固定的,而負載則可以是音頻或者視頻數(shù)據(jù)。RTP數(shù)據(jù)報的頭部格式如圖1所示:
其中比較重要的幾個域及其意義如下:
CSRC記數(shù)(CC):表示CSRC標(biāo)識的數(shù)目。CSRC標(biāo)識緊跟在RTP固定頭部之后,用來表示RTP數(shù)據(jù)報的來源,RTP協(xié)議允許在同一個會話中存在多個數(shù)據(jù)源,它們可以通過RTP混合器合并為一個數(shù)據(jù)源。例如,可以產(chǎn)生一個CSRC列表來表示一個電話會議,該會議通過一個RTP混合器將所有講話者的語音數(shù)據(jù)組合為一個RTP數(shù)據(jù)源。
負載類型(PT):標(biāo)明RTP負載的格式,包括所采用的編碼算法、采樣頻率、承載通道等。例如,類型2表明該RTP數(shù)據(jù)包中承載的是用ITU G.721算法編碼的語音數(shù)據(jù),采樣頻率為8000Hz,并且采用單聲道。
序列號:用來為接收方提供探測數(shù)據(jù)丟失的方法,但如何處理丟失的數(shù)據(jù)則是應(yīng)用程序自己的事情,RTP協(xié)議本身并不負責(zé)數(shù)據(jù)的重傳。
時間戳:記錄了負載中第一個字節(jié)的采樣時間,接收方能夠時間戳能夠確定數(shù)據(jù)的到達是否受到了延遲抖動的影響,但具體如何來補償延遲抖動則是應(yīng)用程序自己的事情。
從RTP數(shù)據(jù)報的格式不難看出,它包含了傳輸媒體的類型、格式、序列號、時間戳以及是否有附加數(shù)據(jù)等信息,這些都為實時的流媒體傳輸提供了相應(yīng)的基礎(chǔ)。RTP協(xié)議的目的是提供實時數(shù)據(jù)(如交互式的音頻和視頻)的端到端傳輸服務(wù),因此在RTP中沒有連接的概念,它可以建立在底層的面向連接或面向非連接的傳輸協(xié)議之上;RTP也不依賴于特別的網(wǎng)絡(luò)地址格式,而僅僅只需要底層傳輸協(xié)議支持組幀(Framing)和分段(Segmentation)就足夠了;另外RTP本身還不提供任何可靠性機制,這些都要由傳輸協(xié)議或者應(yīng)用程序自己來保證。在典型的應(yīng)用場合下,RTP一般是在傳輸協(xié)議之上作為應(yīng)用程序的一部分加以實現(xiàn)的,如圖2所示:
二、RTCP控制協(xié)議RTCP控制協(xié)議需要與RTP數(shù)據(jù)協(xié)議一起配合使用,當(dāng)應(yīng)用程序啟動一個RTP會話時將同時占用兩個端口,分別供RTP和RTCP使用。RTP本身并不能為按序傳輸數(shù)據(jù)包提供可靠的保證,也不提供流量控制和擁塞控制,這些都由RTCP來負責(zé)完成。通常RTCP會采用與RTP相同的分發(fā)機制,向會話中的所有成員周期性地發(fā)送控制信息,應(yīng)用程序通過接收這些數(shù)據(jù),從中獲取會話參與者的相關(guān)資料,以及網(wǎng)絡(luò)狀況、分組丟失概率等反饋信息,從而能夠?qū)Ψ?wù)質(zhì)量進行控制或者對網(wǎng)絡(luò)狀況進行診斷。
RTCP協(xié)議的功能是通過不同的RTCP數(shù)據(jù)報來實現(xiàn)的,主要有如下幾種類型:
SR:發(fā)送端報告,所謂發(fā)送端是指發(fā)出RTP數(shù)據(jù)報的應(yīng)用程序或者終端,發(fā)送端同時也可以是接收端。微軟雅黑; overfl
總結(jié)
以上是生活随笔為你收集整理的php视频流传输,视频流传输协议RTP/RTCP/RTSP/HTTP的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java lwjgl3_java-LWJ
- 下一篇: php 上一个月的开始和结束,php获取