HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳送協議。HTTP基於TCP/IP通訊協議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)。全部的www文件都必須遵照這個標準。設計HTTP最初的目的是爲了提供一種發佈和接收html頁面的方法。1960年美國人Ted Nelson構思了一種經過計算機處理文本信息的方法,並稱之爲超文本(hypertext),這成爲了HTTP超文本傳輸協議標準架構的發展根基。html
RTSP(Real Time Streaming Protocol),是一種實時流傳輸協議,是TCP/IP協議體系中的一個應用層協議。做爲一個應用層協議,RTSP提供了一個可供擴展的框架,它的意義在於使得實時流媒體數據的受控和點播變得可能。總的說來,RTSP是一個流媒體表示協議,主要用來控制具備實時特性的數據發送,但它自己並不傳輸數據,而是必須依賴於下層傳輸協議所提供的某些服務。RTSP能夠對流媒體提供諸如播放、暫 停、快進等操做,它負責定義具體的控制消息、操做方法、狀態碼等,此外還描述了與RTP間的交互操做(RFC2326)。瀏覽器
RTMP協議是Real Time Message Protocol(實時信息傳輸協議)的縮寫,它是由Adobe公司提出的一種應用層的協議,用來解決多媒體數據傳輸流的多路複用(Multiplexing)和分包(packetizing)的問題。特色以下:緩存
RTP數據協議負責對流媒體數據進行封包並實現媒體流的實時傳輸,每個RTP數據報都由頭部(Header)和負載(Payload)兩個部分組成,其中頭部前12個字節的含義是固定的,而負載則能夠是音頻或者視頻數據。RTP用到的地方就是 PLAY ,服務器往客戶端傳輸數據用UDP協議,RTP是在傳輸數據的前面加了個12字節的頭(描述信息)。RTP載荷封裝設計本文的網絡傳輸是基於IP協議,因此最大傳輸單元(MTU)最大爲1500字節,在使用IP/UDP/RTP的協議層次結構的時候,這 其中包括至少20字節的IP頭,8字節的UDP頭,以及12字節的RTP頭。這樣,頭信息至少要佔用40個字節,那麼RTP載荷的最大尺寸爲1460字 節。以H264 爲例,若是一幀數據大於1460,則須要分片打包,而後到接收端再拆包,組合成一幀數據,進行解碼播放。服務器
RTCP控制協議須要與RTP數據協議一塊兒配合使用,當應用程序啓動一個RTP會話時將同時佔用兩個端口,分別供RTP和RTCP使用。RTP自己並 不能爲按序傳輸數據包提供可靠的保證,也不提供流量控制和擁塞控制,這些都由RTCP來負責完成。一般RTCP會採用與RTP相同的分發機制,向會話中的 全部成員週期性地發送控制信息,應用程序經過接收這些數據,從中獲取會話參與者的相關資料,以及網絡情況、分組丟失機率等反饋信息,從而可以對服務質量進 行控制或者對網絡情況進行診斷。網絡
RTCP協議的功能是經過不一樣的RTCP數據報來實現的,主要有以下幾種類型:架構
簡單來講:框架
HTTP將全部的數據做爲文件作處理。http協議不是流媒體協議。RTMP和RTSP協議是流媒體協議。ide
這裏再提一下於流媒體有關的知識:測試
什麼是GOP?就是視頻流中兩個I幀的時間距離。
GOP有什麼影響?
Flash(解碼器)只有拿到GOP才能開始解碼播放。
也就是說,服務器通常先給一個I幀給Flash。
惋惜問題來了,假設GOP是10秒,也就是每隔10秒纔有關鍵幀,
若是用戶在第5秒時開始播放,會怎麼樣?
第一種方案:等待下一個I幀,
也就是說,再等5秒纔開始給客戶端數據。
這樣延遲就很低了,老是實時的流。
問題是:等待的這5秒,會黑屏,現象就是播放器卡在那裏,什麼也沒有,
有些用戶可能覺得死掉了,就會刷新頁面。
總之,某些客戶會認爲等待關鍵幀是個不可饒恕的錯誤,延時有什麼關係?
我就但願能快速啓動和播放視頻,最好打開就能放!
第二種方案:立刻開始放,
放什麼呢?
你確定知道了,放前一個I幀。
也就是說,服務器須要老是cache一個gop,
這樣客戶端上來就從前一個I幀開始播放,就能夠快速啓動了。
問題是:延遲天然就大了。
有沒有好的方案?
有!至少有兩種:
編碼器調低GOP,譬如0.5秒一個GOP,這樣延遲也很低,也不用等待。
壞處是編碼器壓縮率會下降,圖像質量沒有那麼好。編碼