【經驗分享】RTC 技術系列之視頻編解碼

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"要了解什麼是視頻編解碼,首先我們需要了解什麼是視頻","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"視頻歸根結底是一系列連續的圖像幀,當這些圖像以一定速率播放時,人眼就會判斷其是連續活動的,這樣就構成了視頻。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"那爲什麼要進行視頻編解碼呢,因爲視頻信號數字化後數據量巨大,如果以這樣的數據量進行網絡傳輸或者存儲時,會佔用大量的帶寬和存儲空間,造成浪費。已當前主流的1080P分辨率,一秒30幀的視頻舉例","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"1080P圖像的高和寬分別爲1080和1920,每個像素用三原色RGB表示(即每個像素三個字節),因此每幀圖像的數據量爲1080*1920*3*8=49766400,每秒30幀,則需要乘以30,49766400*30 = 1,492,992,000bps。因此視頻編解碼技術因此而誕生。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲什麼視頻可以壓縮呢,我們分兩個方面看這個問題","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"1 在一副圖像中,往往有相近的顏色區域,這樣就蘊含了大量的冗餘信息,可以基於","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"變化編碼和量化編碼進行冗餘信息處理,達到壓縮的可能。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"2 兩幅圖像之間,肯定也存在大量相同以及相似的部分,因此產生了運動補償及運動估計來描述運動矢量來進行圖像間冗餘信息壓縮的可能。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"基於圖像內預測編碼和圖像間預測編碼原理,誕生了衆多的視頻編解碼","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/bf/bfeeefe21e63d537b79238804a7a33e6.jpeg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"H.26X系列,從H.261,H.263,到當前主流的H.264,及H.265,當前最新制定標準的H.266;H.26X系列的發展宗旨爲使用技術優化壓縮數據量不能夠達到更好的視頻質量;像","attrs":{}},{"type":"text","text":"H.265旨僅需原先的一半帶寬即可播放相同質量的視頻。它與H.264有着相類似的算法架構,並同時對一些相關技術加以改進而大幅提高視頻質量。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"Mpeg系列,Mpeg1,Mpeg2,Mpeg4(Mpeg4之後與H.264融合)","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"VP系列,VP8,VP9;VP系列是Google自研並開源的編解碼系列,Google創建VP系列編解碼的原因也是H.264需要專利費用,即如果WebRTC使用H.264,則需要按瀏覽器支付相關的專利費用(當然由於H.264廣泛支持性,主要原因還是cisco開源了OpenH64),VP8即對標H.264,除了在WebRTC領域,其知名度和支持度則相對有限;","attrs":{}},{"type":"text","text":"VP9則對標H.265,VP9的目標之一是在保證相同質量的情況下相對於VP8可以減少50%左右的碼率,換句話說,相同的碼率,VP9能比VP8畫質有非常明顯的提高。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"國產系列,AVS標準,AVS1.0,AVS2.0;","attrs":{}},{"type":"text","text":"AVS是我國具備自主知識產權的第二代信源編碼標準。AVS2.0,屬於與H.265和VP9同級的新一代標準;雖然AVS的使用和知名度貌似不高,但說明我國已經注意到這個領域併發力。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"SVAC標準,我國一個應用於視頻監控領域的編解碼,特點在於加密認證高安全:規定了加密和認證接口及數據格式,保證數據的安全性、完整性、非否認性;感興趣區域(ROI)編碼:圖像分爲若干個感興趣區域和一個背景區域,在重點監控區域保證實時視頻信息,幀率較高,節省非感興趣區域的開銷; 視頻信息嵌入,可將聲音識別特徵參數、特殊事件、時間等信息都可嵌入編碼裏,在不解開視頻的前提下,可針對性的提取、快速檢索、分類查詢;可伸縮性視頻解碼(SVC):對視頻數據分層編碼,滿足不同傳輸網絡寬帶和數據存儲環境的需求,普通編碼程序傳輸有主碼流、子碼流,佔用帶寬較大,SVAC傳輸只有一類碼流,對碼流分層就可獲得不同分辨率的圖片信息。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"WebRTC最初由Google提出,主要是基於瀏覽器的RTC通訊,故此叫做WebRTC;初期幾大瀏覽器在WebRTC及其視頻編解碼支持的力度上也是不一的,像Mozilla陣營的Chrome,FireFox,Opera初期也不一樣,Chrome初期只支持VP系列,原因上面介紹過,後續逐漸延伸到H.264,由於原有的RTC通訊領域大都使用H.264編解碼,因此H.264的支持對於跨領域RTC互通提供了很大便利,我覺得也一定程度上加速了WebRTC的發展,比如瀏覽器和手機同時加入到視頻會議;或者瀏覽器跟當前的SIP終端點點通話,由於H.264的支持,大大減少了轉碼的要求,做視頻的轉碼是非常消耗性能的,或者使用專用硬件實現。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/d2/d242b8a3e7fd7d5acd394cd09ffdde12.jpeg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當然後續越來越多廠家加入了WebRTC領域,像Agora聲網的RTC系統,已經超過了WebRTC,像他的各種硬件芯片平臺的SDK適配,SD-RTN系統(優先路徑選擇確保高的傳輸質量,畢竟通訊不是純終端側的功能,網絡對通訊質量,視頻或者音頻的影響也是juda),優異的弱網對抗算法,可以抵禦70%的視頻丟包確保通話流暢。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當前隨着物聯網的發展,除了人們的通話通訊,音視頻會議之外,RTC越來越廣泛的應用各個領域;像安防監控,智能硬件終端,視頻處理所處的硬件設備越來越小型甚至微型化,原有的基於軟件進行編解碼,無論從內存,CPU,性能等資源佔用方面,都顯示出很大劣勢;衆多廠家也意識到這個情況,因此越來越多的專業芯片幹專業事情的趨勢越發明顯。像監控領域,華爲海思ARM+專業視頻處理單元,佔據了國內視頻70%以上的市場;NVIDIA推出了Jeston系列芯片,應對邊緣計算場景,ARM+GPU的處理方式更通用,同時由於ARM的低功耗,可以使得邊緣側設備具備視頻處理,機器視覺處理,AI分析能力,大大豐富了智能物聯網的應用。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由於這兩年的疫情,在線教育,直播的發展,Web實時通訊帶來了非常大的發展機會,其商業化成功也爲技術發展持續注入了活力;伴隨着5G的火熱,VR/AR、自動駕駛等新應用場景的出現,必將爲WebRTC技術帶來新的動力,催動着基於互聯網的實時音視頻通信技術的發展。","attrs":{}}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章