未知問題:
編碼,封裝,協議的區別:
如何將TS源流重新封裝并通過P2P協議傳輸在安卓終端和蘋果終端播放封裝
介紹完了視頻編碼后,再來介紹一些封裝。沿用前面的比喻,封裝可以理解為采用哪種貨車去運輸,也就是媒體的容器。
所謂容器,就是把編碼器生成的多媒體內容(視頻,音頻,字幕,章節信息等)混合封裝在一起的標準。容器使得不同多媒體內容同步播放變得很簡單,而容器的另一個作用就是為多媒體內容提供索引,也就是說如果沒有容器存在的話一部影片你只能從一開始看到最后,不能拖動進度條(當然這種情況下有的播放器會話比較長的時間臨時創建索引),而且如果你不自己去手動另外載入音頻就沒有聲音。
下面介紹幾種常見的封裝格式和優缺點:
- AVI 格式(后綴為 .avi):
它的英文全稱為 Audio Video Interleaved ,即音頻視頻交錯格式。它于 1992 年被 Microsoft 公司推出。這種視頻格式的優點是圖像質量好。由于無損 AVI 可以保存 alpha 通道,經常被我們使用。缺點太多,體積過于龐大,而且更加糟糕的是壓縮標準不統一,最普遍的現象就是高版本 Windows 媒體播放器播放不了采用早期編碼編輯的 AVI 格式視頻,而低版本 Windows 媒體播放器又播放不了采用最新編碼編輯的 AVI 格式視頻,所以我們在進行一些 AVI 格式的視頻播放時常會出現由于視頻編碼問題而造成的視頻不能播放或即使能夠播放,但存在不能調節播放進度和播放時只有聲音沒有圖像等一些莫名其妙的問題。 - DV-AVI 格式(后綴為 .avi):
DV 的英文全稱是 Digital Video Format ,是由索尼、松下、JVC 等多家廠商聯合提出的一種家用數字視頻格式。數字攝像機就是使用這種格式記錄視頻數據的。它可以通過電腦的 IEEE 1394 端口傳輸視頻數據到電腦,也可以將電腦中編輯好的的視頻數據回錄到數碼攝像機中。這種視頻格式的文件擴展名也是 AVI。電視臺采用錄像帶記錄模擬信號,通過 EDIUS 由IEEE 1394端口采集卡從錄像帶中采集出來的視頻就是這種格式。 - QuickTime File Format 格式(后綴為 .mov):
美國 Apple 公司開發的一種視頻格式,默認的播放器是蘋果的 QuickTime。具有較高的壓縮比率和較完美的視頻清晰度等特點,并可以保存 alpha 通道。 - MPEG 格式(文件后綴可以是 .mpg .mpeg .mpe .dat .vob .asf .3gp .mp4等) :
它的英文全稱為 Moving Picture Experts Group,即運動圖像專家組格式,該專家組建于 1988 年,專門負責為 CD 建立視頻和音頻標準,而成員都是為視頻、音頻及系統領域的技術專家。MPEG 文件格式是運動圖像壓縮算法的國際標準。MPEG 格式目前有三個壓縮標準,分別是 MPEG-1、MPEG-2、和 MPEG-4 。MPEG-1、MPEG-2 目前已經使用較少,著重介紹 MPEG-4,其制定于 1998 年,MPEG-4 是為了播放流式媒體的高質量視頻而專門設計的,以求使用最少的數據獲得最佳的圖像質量。目前 MPEG-4 最有吸引力的地方在于它能夠保存接近于 DVD 畫質的小體積視頻文件。 - WMV 格式(后綴為.wmv .asf):
它的英文全稱為 Windows Media Video,也是微軟推出的一種采用獨立編碼方式并且可以直接在網上實時觀看視頻節目的文件壓縮格式。WMV 格式的主要優點包括:本地或網絡回放,豐富的流間關系以及擴展性等。WMV 格式需要在網站上播放,需要安裝 Windows Media Player( 簡稱 WMP),很不方便,現在已經幾乎沒有網站采用了。 - Real Video 格式(后綴為 .rm .rmvb):
Real Networks 公司所制定的音頻視頻壓縮規范稱為Real Media。用戶可以使用 RealPlayer 根據不同的網絡傳輸速率制定出不同的壓縮比率,從而實現在低速率的網絡上進行影像數據實時傳送和播放。RMVB 格式:這是一種由 RM 視頻格式升級延伸出的新視頻格式,當然性能上有很大的提升。RMVB 視頻也是有著較明顯的優勢,一部大小為 700 MB 左右的 DVD 影片,如果將其轉錄成同樣品質的 RMVB 格式,其個頭最多也就 400 MB 左右。大家可能注意到了,以前在網絡上下載電影和視頻的時候,經常接觸到 RMVB 格式,但是隨著時代的發展這種格式被越來越多的更優秀的格式替代,著名的人人影視字幕組在 2013 年已經宣布不再壓制 RMVB 格式視頻。 - Flash Video 格式(后綴為 .flv):
由 Adobe Flash 延伸出來的的一種流行網絡視頻封裝格式。隨著視頻網站的豐富,這個格式已經非常普及。 - Matroska 格式(后綴為 .mkv):
是一種新的多媒體封裝格式,這個封裝格式可把多種不同編碼的視頻及 16 條或以上不同格式的音頻和語言不同的字幕封裝到一個 Matroska Media 檔內。它也是其中一種開放源代碼的多媒體封裝格式。Matroska 同時還可以提供非常好的交互功能,而且比 MPEG 的方便、強大。 - MPEG2-TS 格式 (后綴為 .ts)(Transport Stream「傳輸流」,又稱 MTS、TS):
是一種傳輸和存儲包含音效、視頻與通信協議各種數據的標準格式,用于數字電視廣播系統,如 DVB、ATSC、IPTV 等等。MPEG2-TS 定義于 MPEG-2 第一部分,系統(即原來之 ISO/IEC 標準 13818-1 或 ITU-T Rec. H.222.0)。Media Player Classic、VLC 多媒體播放器等軟件可以直接播放 MPEG-TS 文件。
目前,我們在流媒體傳輸,尤其是直播中主要采用的就是 FLV 和 MPEG2-TS 格式,分別用于 RTMP/HTTP-FLV 和 HLS 協議。
RTMP協議知識點:
- RTMP協議是封裝的FLV視頻在互聯網中進行傳輸。
- RTMP協議基于tcp協議;而TCP協議實時性不如UDP,也非常占用帶寬。目前基于UDP的RTMFP協議能很好的解決這些問題。
RTMP vs HLS vs HTTP FLV:
- RTMP:Adobe公司的流媒體傳輸協議,端口號1935普通網絡用戶均可使用,包括非IOS平臺用戶,對非80端口(如1935)無限制的網絡環境用戶。優點:防HTTP下載,延時短。
HLS:IOS平臺下的流媒體傳輸協議 ,端口號80優點:H5瀏覽器支持比較好,IOS,安卓原生支持。缺點:延遲性比較大。樓上說的切片,關鍵幀改變后切片時間可以縮短,而且可以自己設定首次產生多少分片。
HTTP FLV:是一種將直播流模擬成FLV文件,通過HTTP協議進行下載的模式來實現流媒體傳輸的協議,端口號80 一般建議使用HTTP FLV,實時性和RTMP相等。優點:HTTP相比于RTMP省去了一些協議交互時間,首屏時間更短。HTTP可拓展的功能更多。
作者:世界與你同在
鏈接:https://www.zhihu.com/question/47504661/answer/117559809
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。 - HLS:移動h5瀏覽器支持較好,但是延遲較大。移動端播放前需要產生三個分片,每個分片至少得是一個GOP。一個GOP即使是2秒,也意味著這個環節耗費了6秒的延時。
RTMP:需要訪問1935端口,支持雙向互動,實時性很好,PC flash原生支持。
HTTP-FLV:不支持雙向互動,實時性和RTMP協議一致。我們目前用的是HTTP-FLV作為拉流協議。原因如下:1, 國內網絡情況的惡劣程度,并不是每個網絡防火墻都允許1935包通過。2,RTMP協議和HTTP-FLV,實際傳輸的內容都是相同的FLV,實時性也一樣。3,RTMP協議握手方式比HTTP復雜。
作者:ksy-codefarmer
鏈接:https://www.zhihu.com/question/47504661/answer/106441080
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
- RTP&RTCP基于UDP協議。
- RTSP可選擇TCP/UDP協議。
- RTMP基于TCP協議。
- 什么是GOP?就是視頻流中兩個I幀的時間距離。
- 理論上RTSP RTMP HTTP都可以做直播和點播,但一般做直播用RTSP RTMP,做點播用HTTP。做視頻會議的時候原來用SIP協議,現在基本上被RTMP協議取代了。
RTMP特點:
- Adobe支持得很好:
RTMP實際上是現在編碼器輸出的工業標準協議,基本上所有的編碼器(攝像頭之類)都支持RTMP輸出。
原因在于PC市場巨大,PC主要是Windows,Windows的瀏覽器基本上都支持flash,
Flash又支持RTMP支持得非常好。 - 適合長時間播放:
因為RTMP支持的很完善,所以能做到flash播放RTMP流長時間不斷流,
當時測試是100萬秒,即10天多可以連續播放。
對于商用流媒體應用,客戶端的穩定性當然也是必須的,否則最終用戶看不了還怎么玩?
我就知道有個教育客戶,最初使用播放器播放http流,需要播放不同的文件,結果就總出問題,
如果換成服務器端將不同的文件轉換成RTMP流,客戶端就可以一直播放;
該客戶走RTMP方案后,經過CDN分發,沒聽說客戶端出問題了。 - 延遲較低:
比起YY的那種UDP私有協議,RTMP算延遲大的(延遲在1-3秒),
比起HTTP流的延時(一般在10秒以上)RTMP算低延時。
一般的直播應用,只要不是電話類對話的那種要求,RTMP延遲是可以接受的。
在一般的視頻會議應用中,RTMP延時也能接受,原因是別人在說話的時候我們一般在聽,
實際上1秒延時沒有關系,我們也要思考(話說有些人的CPU處理速度還沒有這么快)。 - 有累積延遲:
技術一定要知道弱點,RTMP有個弱點就是累積誤差,原因是RTMP基于TCP不會丟包。
所以當網絡狀態差時,服務器會將包緩存起來,導致累積的延遲;
待網絡狀況好了,就一起發給客戶端。
這個的對策就是,當客戶端的緩沖區很大,就斷開重連。
HTTP協議/RTSP協議/RTMP協議的區別