因為業務需要,這段時間一直在準備做一個新的HTML5播放器,涉及到一些底層的視頻知識,這段時間到處搜索了解了一些相關信息,這里先做一個階段性總結。
MPEGMPEG(Moving Picture Experts Group,動態圖像專家組)是ISO(International Standardization Organization,國際標準化組織)與IEC(International Electrotechnical Commission,國際電工委員會)于1988年成立的專門針對運動圖像和語音壓縮制定國際標準的組織。
這一段我是直接從百度百科上粘下來的官方解釋,總結下來就是這是一個專門制定視音頻通用標準的一個組織,因為要讓播放器能正確識別播放各種視頻,所以需要一份視音頻格式的業界標準。我也同找到了一個解答很清晰簡單的回答。通常來講,每一次制定一個版本的白皮書就是一次技術的革新。
比如最開始MPEG1就是針對VCD制定的音頻壓縮標準(其中我們所熟知及最近正在被漸漸廢棄的mp3格式就是指MPEG-1 audio layer 3)
MPEG2開始針對DVD制定視頻+音頻的壓縮標準,視頻其實可以看作是圖片幀序列,比如一張經過壓縮的jpg圖片的大小是100KB,對于一個每秒24幀的1分鐘的視頻來說,一個視頻可能就有100KB * 24 * 60 ≈ 14G的大小,這樣肯定不行。MPEG2協議中就定義了一些業界的視頻壓縮標準。
MPEG3其實和mp3不同,本來MPEG3是針對HDTV廣播視頻而制定的協議,但是由于MPEG-2的出色性能表現,已能適用于HDTV,使得原打算為HDTV設計的MPEG-3,還沒出世就被拋棄了。
后來隨著手機的出現,因為手機的存儲量有限,就要求更高的壓縮率,比如原來一張DVD的存儲量有4GB,而手機只有1G,這時候通過一些算法大牛們的努力,慢慢就有了MPEG4的協議制定。MPEG4協議中用了更高級的壓縮算法,會比MPEG2有更高的壓縮比。
Containercontainer就是指視頻的格式,包括.mp4, .mov, .wmv, .m3u8, .flv等等,container作為容器主要包含了video數據、audio數據、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等等。可以分為intraframe codec和interframe codec。其中H.264/AVC,也稱為MPEG-4 高級視頻編碼(Advanced Video Coding,AVC),并且它將成為MPEG-4標準的第10部分(MPEG協議有很多部分,壓縮方式是其中的一部分,還有一些部分定義了視頻文件結構標準等)。就是現在工業界普遍在用的視頻壓縮方式。
MediaSource Extension瀏覽器新提供的通過JavaScript生成媒體流來播放的API,通過window.URL.createObjectURL(MediaSource)接口可以在瀏覽器端生成一個可播放的blob鏈接,并設置給video標簽
HLS vs. RTMP這個基本可以鏈接我上一篇文章了,是當前比較通用的兩個直播傳輸協議。其中HLS協議的直播視頻格式是m3u8,RTMP的是flv。
m3u8文件上面2張圖片,左圖是一個普通的m3u8文件打開的內容,其實m3u8文件是一個純文本,可以用記事本直接打開的,是一個視頻描述文件,里面描述了一個個.ts文件片段的地址(或相對地址)、時長及hls協議版本信息等。右圖是一個可以有多碼率自適應的m3u8描述文件,可以根據不同帶寬選擇不同的m3u8地址。其中ts文件才是真正的視頻數據。
ts文件上圖是我找的網上關于ts文件的詳細文件結構,一個ts文件在傳輸過程中是以188byte大小的包傳輸的,每一個包包括一個header和payload。header中又有不同的字段,用來描述視頻信息及payload所在的位置,payload即是有效負載,就是視頻信息,是一個在通信領域的專用名詞。具體的文件結構解析,打算在下一篇m3u8文件詳細的文章中描述。
fragmented mp4也就是fmp4,是適應于現代瀏覽器的一種流媒體格式。和mp4格式不同的是,以往的mp4格式化也分為header信息和payload信息,一個大的mp4就會有一個很大的頭信息,不適合與現在的網絡環境。所以新的fmp4格式就出現了,fmp4格式有一個帶了metadata的頭片段,及后面一序列的fragment,每個fragment都有各自的header信息,這樣就把header信息也分成了一個個小的片段,更適合現在的應用場景。所以fmp4格式也就是用于MediaSource對象的SourceBuffer的格式,通過一個initSegment和一序列的segment塞給MediaSource對象來播放。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/11026.html
因為業務需要,這段時間一直在準備做一個新的HTML5播放器,涉及到一些底層的視頻知識,這段時間到處搜索了解了一些相關信息,這里先做一個階段性總結。 MPEG MPEG(Moving Picture Experts Group,動態圖像專家組)是ISO(International Standardization Organization,國際標準化組織)與IEC(International Elec...
閱讀 1377·2021-09-26 09:55
閱讀 1917·2019-08-30 12:45
閱讀 1055·2019-08-29 11:20
閱讀 3554·2019-08-26 11:33
閱讀 3411·2019-08-26 10:55
閱讀 1685·2019-08-23 17:54
閱讀 2381·2019-08-23 15:55
閱讀 2341·2019-08-23 14:23