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