因?yàn)闃I(yè)務(wù)需要,這段時間一直在準(zhǔn)備做一個新的HTML5播放器,涉及到一些底層的視頻知識,這段時間到處搜索了解了一些相關(guān)信息,這里先做一個階段性總結(jié)。
MPEGMPEG(Moving Picture Experts Group,動態(tài)圖像專家組)是ISO(International Standardization Organization,國際標(biāo)準(zhǔn)化組織)與IEC(International Electrotechnical Commission,國際電工委員會)于1988年成立的專門針對運(yùn)動圖像和語音壓縮制定國際標(biāo)準(zhǔn)的組織。
這一段我是直接從百度百科上粘下來的官方解釋,總結(jié)下來就是這是一個專門制定視音頻通用標(biāo)準(zhǔn)的一個組織,因?yàn)橐尣シ牌髂苷_識別播放各種視頻,所以需要一份視音頻格式的業(yè)界標(biāo)準(zhǔn)。我也同找到了一個解答很清晰簡單的回答。通常來講,每一次制定一個版本的白皮書就是一次技術(shù)的革新。
比如最開始MPEG1就是針對VCD制定的音頻壓縮標(biāo)準(zhǔn)(其中我們所熟知及最近正在被漸漸廢棄的mp3格式就是指MPEG-1 audio layer 3)
MPEG2開始針對DVD制定視頻+音頻的壓縮標(biāo)準(zhǔn),視頻其實(shí)可以看作是圖片幀序列,比如一張經(jīng)過壓縮的jpg圖片的大小是100KB,對于一個每秒24幀的1分鐘的視頻來說,一個視頻可能就有100KB * 24 * 60 ≈ 14G的大小,這樣肯定不行。MPEG2協(xié)議中就定義了一些業(yè)界的視頻壓縮標(biāo)準(zhǔn)。
MPEG3其實(shí)和mp3不同,本來MPEG3是針對HDTV廣播視頻而制定的協(xié)議,但是由于MPEG-2的出色性能表現(xiàn),已能適用于HDTV,使得原打算為HDTV設(shè)計(jì)的MPEG-3,還沒出世就被拋棄了。
后來隨著手機(jī)的出現(xiàn),因?yàn)槭謾C(jī)的存儲量有限,就要求更高的壓縮率,比如原來一張DVD的存儲量有4GB,而手機(jī)只有1G,這時候通過一些算法大牛們的努力,慢慢就有了MPEG4的協(xié)議制定。MPEG4協(xié)議中用了更高級的壓縮算法,會比MPEG2有更高的壓縮比。
Containercontainer就是指視頻的格式,包括.mp4, .mov, .wmv, .m3u8, .flv等等,container作為容器主要包含了video數(shù)據(jù)、audio數(shù)據(jù)、metadata(用于檢索視頻payload格式等信息)。
CodecCOmpress and DECompress,是指視音頻的壓縮方式,包括H.265/MPEG-H HEVC, H.264/MPEG-4 AVC, H.263/MPEG-4 Part 2, H.262/MPEG-2等等??梢苑譃閕ntraframe codec和interframe codec。其中H.264/AVC,也稱為MPEG-4 高級視頻編碼(Advanced Video Coding,AVC),并且它將成為MPEG-4標(biāo)準(zhǔn)的第10部分(MPEG協(xié)議有很多部分,壓縮方式是其中的一部分,還有一些部分定義了視頻文件結(jié)構(gòu)標(biāo)準(zhǔn)等)。就是現(xiàn)在工業(yè)界普遍在用的視頻壓縮方式。
MediaSource Extension瀏覽器新提供的通過JavaScript生成媒體流來播放的API,通過window.URL.createObjectURL(MediaSource)接口可以在瀏覽器端生成一個可播放的blob鏈接,并設(shè)置給video標(biāo)簽
HLS vs. RTMP這個基本可以鏈接我上一篇文章了,是當(dāng)前比較通用的兩個直播傳輸協(xié)議。其中HLS協(xié)議的直播視頻格式是m3u8,RTMP的是flv。
m3u8文件上面2張圖片,左圖是一個普通的m3u8文件打開的內(nèi)容,其實(shí)m3u8文件是一個純文本,可以用記事本直接打開的,是一個視頻描述文件,里面描述了一個個.ts文件片段的地址(或相對地址)、時長及hls協(xié)議版本信息等。右圖是一個可以有多碼率自適應(yīng)的m3u8描述文件,可以根據(jù)不同帶寬選擇不同的m3u8地址。其中ts文件才是真正的視頻數(shù)據(jù)。
ts文件上圖是我找的網(wǎng)上關(guān)于ts文件的詳細(xì)文件結(jié)構(gòu),一個ts文件在傳輸過程中是以188byte大小的包傳輸?shù)?,每一個包包括一個header和payload。header中又有不同的字段,用來描述視頻信息及payload所在的位置,payload即是有效負(fù)載,就是視頻信息,是一個在通信領(lǐng)域的專用名詞。具體的文件結(jié)構(gòu)解析,打算在下一篇m3u8文件詳細(xì)的文章中描述。
fragmented mp4也就是fmp4,是適應(yīng)于現(xiàn)代瀏覽器的一種流媒體格式。和mp4格式不同的是,以往的mp4格式化也分為header信息和payload信息,一個大的mp4就會有一個很大的頭信息,不適合與現(xiàn)在的網(wǎng)絡(luò)環(huán)境。所以新的fmp4格式就出現(xiàn)了,fmp4格式有一個帶了metadata的頭片段,及后面一序列的fragment,每個fragment都有各自的header信息,這樣就把header信息也分成了一個個小的片段,更適合現(xiàn)在的應(yīng)用場景。所以fmp4格式也就是用于MediaSource對象的SourceBuffer的格式,通過一個initSegment和一序列的segment塞給MediaSource對象來播放。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/83569.html
因?yàn)闃I(yè)務(wù)需要,這段時間一直在準(zhǔn)備做一個新的HTML5播放器,涉及到一些底層的視頻知識,這段時間到處搜索了解了一些相關(guān)信息,這里先做一個階段性總結(jié)。 MPEG MPEG(Moving Picture Experts Group,動態(tài)圖像專家組)是ISO(International Standardization Organization,國際標(biāo)準(zhǔn)化組織)與IEC(International Elec...
閱讀 1580·2021-10-14 09:42
閱讀 3826·2021-09-07 09:59
閱讀 1305·2019-08-30 15:55
閱讀 581·2019-08-30 11:17
閱讀 3345·2019-08-29 16:06
閱讀 512·2019-08-29 14:06
閱讀 3134·2019-08-28 18:14
閱讀 3656·2019-08-26 13:55