流媒體用的是什么協(xié)議?
常用的流媒體協(xié)議主要有HTTP漸進(jìn)下載和基于RTSP/RTP的實(shí)時(shí)流媒體協(xié)議兩類。在流式傳輸?shù)膶?shí)現(xiàn)方案中,一般采用HTTP/TCP來傳輸控制信息,而用RTP/UDP來傳輸實(shí)時(shí)多媒體數(shù)據(jù)。
1 實(shí)時(shí)傳輸協(xié)議RTP與RTCPRTP(Real-time Transport Protocol)是用于Internet上針對(duì)多媒體數(shù)據(jù)流的一種傳輸協(xié)議。RTP由兩個(gè)緊密鏈接部分組成:RTP----傳送具有實(shí)時(shí)屬性的數(shù)據(jù);RTP控制協(xié)議(RTCP)----監(jiān)控服務(wù)質(zhì)量并傳送正在進(jìn)行的會(huì)話參與者的相關(guān)信息。RTP協(xié)議是建立在UDP協(xié)議上的。RTP協(xié)議詳細(xì)說明了在互聯(lián)網(wǎng)上傳遞音頻和視頻的標(biāo)準(zhǔn)數(shù)據(jù)包格式。RTP協(xié)議常用于流媒體系統(tǒng)(配合RTCP協(xié)議)、視頻會(huì)議和視頻電話系統(tǒng)(配合H.263或SIP)。RTP本身并沒有提供按時(shí)發(fā)送機(jī)制或其他服務(wù)質(zhì)量(QoS)保證,它依賴于底層服務(wù)去實(shí)現(xiàn)這一過程。RTP并不保證傳送或防止無(wú)序傳送,也不確定底層網(wǎng)絡(luò)的可靠性。RTP實(shí)行有序傳送,RTP中的序列號(hào)允許接收方重組發(fā)送方的包序列,同時(shí)序列號(hào)也能用于決定適當(dāng)?shù)陌恢茫纾涸谝曨l解碼中,就不需要順序解碼。實(shí)時(shí)傳輸控制協(xié)議(Real-time Transport Control Protocol,RTCP)是實(shí)時(shí)傳輸協(xié)議(RTP)的一個(gè)姐妹協(xié)議。RTCP為RTP媒體流提供信道外控制。RTCP定期在流多媒體會(huì)話參加者之間傳輸控制數(shù)據(jù)。RTCP的主要功能是為RTP所提供的服務(wù)質(zhì)量提供反饋。RTCP收集相關(guān)媒體連接的統(tǒng)計(jì)信息,例如:傳輸字節(jié)數(shù),傳輸分組數(shù),丟失分組數(shù),時(shí)延抖動(dòng),單向和雙向網(wǎng)絡(luò)延遲等等。網(wǎng)絡(luò)應(yīng)用程序可以利用RTCP所提供的信息試圖提高服務(wù)質(zhì)量,比如限制信息流量或改用壓縮比較小的編解碼器。RTCP本身不提供數(shù)據(jù)加密或身份認(rèn)證,其伴生協(xié)議SRTCP(安全實(shí)時(shí)傳輸控制協(xié)議)則可用于此類用途。
2 實(shí)時(shí)流協(xié)議RTSPRTSP協(xié)議定義了一對(duì)多應(yīng)用程序如何有效通過IP網(wǎng)絡(luò)傳送多媒體數(shù)據(jù)。RTSP在體系結(jié)構(gòu)上位于RTP和RTCP之上,它使用TCP或RTP完成數(shù)據(jù)傳輸。HTTP與RTSP相比,HTTP傳送HTML,而RTP傳送的是多媒體數(shù)據(jù)。HTTP請(qǐng)求由客戶機(jī)發(fā)出,服務(wù)器做出響應(yīng);RTSP可以是雙向的,即客戶機(jī)和服務(wù)器都可以發(fā)出請(qǐng)求。RTSP與RTP最大的區(qū)別在于:RTSP是一種雙向?qū)崟r(shí)數(shù)據(jù)傳輸協(xié)議,它允許客戶端向服務(wù)器端發(fā)送請(qǐng)求,如回放、快進(jìn)、倒退等操作。當(dāng)然RTSP可基于RTP來傳送數(shù)據(jù),還可以選擇TCP、UDP、組播UDP等通道來發(fā)送數(shù)據(jù),具有很好的擴(kuò)展性。它是一種類似于HTTP協(xié)議的網(wǎng)絡(luò)應(yīng)用協(xié)議。
3 資源預(yù)定協(xié)議RSVPRSVP即資源預(yù)訂協(xié)議,使用RSVP預(yù)留一部分網(wǎng)絡(luò)資源(即帶寬),能在一定程度上為流媒體的傳輸提供QoS。RSVP、RTSP與RTP協(xié)議工作在不同的層次,如下圖所示。
4 實(shí)時(shí)消息傳輸協(xié)議rtmpRTMP(Real Time Messaging Protocol)是Adobe Systems公司為Flash播放器和服務(wù)器之間音頻、視頻和數(shù)據(jù)傳輸開發(fā)的開放協(xié)議。它有三種變種:(1)工作在TCP之上的明文協(xié)議,使用端口1935;(2)RTMPT封裝在HTTP請(qǐng)求之中,可穿越防火墻;(3)RTMPS類似RTMPT,但使用的是HTTPS連接。RTMP視頻播放的特點(diǎn):(1)RTMP協(xié)議是采用實(shí)時(shí)的流式傳輸,所以不會(huì)緩存文件到客戶端,這種特性說明用戶想下載RTMP協(xié)議下的視頻是比較難的;(2)視頻流可以隨便拖動(dòng),既可以從任意時(shí)間點(diǎn)向服務(wù)器發(fā)送請(qǐng)求進(jìn)行播放,并不需要視頻有關(guān)鍵幀。相比而言,HTTP協(xié)議下視頻需要有關(guān)鍵幀才可以隨意拖動(dòng)。(3)RTMP協(xié)議支持點(diǎn)播/回放(通俗點(diǎn)將就是支持把flv,f4v,mp4文件放在RTMP服務(wù)器,客戶端可以直接播放),直播(邊錄制視頻邊播放)。RTMP環(huán)境的架設(shè):因?yàn)樵搮f(xié)議是adobe公司開發(fā)的,所以最初服務(wù)器端架設(shè)的環(huán)境是FMS(Flash Media Server),該軟件為收費(fèi)軟件,價(jià)格昂貴。后來,開源軟件red5的推出,使rtmp協(xié)議的架設(shè)成本大大縮小,但是在性能方面不如fms的穩(wěn)定。此外,wowza雖然是收費(fèi)的,但價(jià)格比較適中。
5 微軟媒體服務(wù)器協(xié)議MMSMMS(Microsoft Media Server Protocol)是用來訪問并流式接收Window Media服務(wù)器中.asf文件的一種協(xié)議。MMS協(xié)議用于訪問Windows Media發(fā)布點(diǎn)上的單播內(nèi)容。MMS是連接Windows Media單播服務(wù)的默認(rèn)方法。若觀眾在Windows Media Player中鍵入一個(gè)URL以連接內(nèi)容,而不是通過超級(jí)鏈接訪問內(nèi)容,則他們必須是MMS協(xié)議引用該流。MMS的預(yù)設(shè)端口是1755.
6 HLSHTTP Live Streaming(HLS)是蘋果公司實(shí)現(xiàn)的基于HTTP的流媒體傳輸協(xié)議,可實(shí)現(xiàn)流媒體的直播和點(diǎn)播,主要應(yīng)用于iOS系統(tǒng)。HLS點(diǎn)播是分段HTTP點(diǎn)播,不同在于它的分段非常小。要實(shí)現(xiàn)HLS點(diǎn)播,重點(diǎn)在于對(duì)媒體文件分段,目前有不少開源工具可以使用。相對(duì)于常見的流媒體直播協(xié)議,HLS直播最大的不同在于,直播客戶端獲取到的并不是一個(gè)完整的數(shù)據(jù)流,HLS協(xié)議在服務(wù)器端將直播數(shù)據(jù)流存儲(chǔ)為連續(xù)的、很短時(shí)長(zhǎng)的媒體文件(MPEG-TS格式),而客戶端則不斷的下載并播放這些小文件,因?yàn)榉?wù)器總是會(huì)將最新的直播數(shù)據(jù)生成新的小文件,這樣客戶端只要不停的按順序播放從服務(wù)器獲取到的文件,就實(shí)現(xiàn)了直播。由此可見,基本上可以認(rèn)為,HLS是以點(diǎn)播的技術(shù)方式實(shí)現(xiàn)直播。由于數(shù)據(jù)通過HTTP協(xié)議傳輸,所以完全不用考慮防火墻或者代理的問題,而且分段文件的時(shí)長(zhǎng)很短,客戶端可以很快的選擇和切換碼率,以適應(yīng)不同帶寬條件下的播放。不過HLS的這種技術(shù)特點(diǎn),決定了它的延遲一般總是會(huì)高于普通的流媒體直播協(xié)議。如果文章對(duì)更多的朋友有益,請(qǐng)分享到朋友圈。【視音頻圖像技術(shù)干貨,流媒體、圖像算法、人工智能、機(jī)器人技術(shù)探索,開源項(xiàng)目推薦,還有更多職場(chǎng)規(guī)劃】歡迎關(guān)注我的微信公眾號(hào),公眾號(hào)添加DaveBobo,更多干貨等著你喲~~~