国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

為什么要編碼?視頻編解碼原理及詳細步驟

454398 ? 來源:青榴實驗室 ? 作者:青榴實驗室 ? 2020-11-26 11:54 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

談到視頻的編解碼,我們會自然地想到H.264、HEVC/H.265這些權威的視頻編解碼標準;談到標準,有人覺得這個是有專門機構去研究的,我們關心應用就好;即使有興趣讀了標準和相關技術,面對更多的是各種數學公式和術語,如協方差、傅立葉變換、高頻、濾波等等,需要花更多時間去理解。通常更為實際的做法是,我們只要調研如何應用這些標準,如何做好軟硬件編碼方案的選型,如何優化技術參數以及如何調用API,也就基本能夠應對日常的視頻業務了。因此,談到視頻的編解碼,往往帶有一絲神秘色彩。

本文的目標是以非專業的視角來看待視頻編解碼原理,試圖將所謂高大上的專業術語或名詞轉換為普通IT業者略懂的話語,從而使更多人了解視頻編解碼到底是怎么回事。

為什么要編碼?

原因很簡單,不經過編碼的源視頻數據量太大了。例如輸出一路1920×1080分辨率、24位色、每秒30幀的高清視頻,就這么一秒鐘的視頻,它的碼率達就到了1.5Gbps.因此需要編碼,盡最大可能將其壓縮至最低。下圖展示了編解碼標準的演進歷程,經過H.264編碼后,視頻碼率被壓縮到10Mbps,是源視頻數據量的1/150。

那么,什么時候我們不再關心編碼了?理想的狀態就是我們不再對存儲空間和網絡帶寬的限制有顧慮的時候,就不需要考慮編碼了,照單全收即可。

思考:N年以后,在 G網絡普及之后,視頻的編解碼技術和CDN的作用會不會越來越被淡化?

什么是編碼?

狹義但不全面的解釋:編碼最主要的工作就是壓縮。但壓縮是分步驟的,不是簡單地把圖像中重復的0 聚在一起這么簡單。依據方法論,可壓縮的內容有以下幾種:

單幅圖像壓縮

一幅圖像,分成若干小塊,每塊8×8像素大小,如果這個小塊的每個像素的顏色都是白色,是不是就可以用一個點的值來代替這所有64個點的值? 這在編碼中的標準術語叫空間冗余,相應的方法叫幀內壓縮。

多幅圖像間壓縮

視頻中一個連續的動作,比如畫面里的女主角在紅墻背景下閉上了眼睛,這一動作的背后,是由一系列的多幅圖片組成,而每幅圖片的內容基本上都是一樣的,唯一變化的部分就是女主角的眼睛所在圖像區域,眼睛緩慢由開到閉,這塊區域的像素值發生了變化。對于絕大多數的背景區域,它是沒有變化的,那么除了含有閉眼動作的這塊區域,是否可以只用一幅圖像來代替這么多個連續的圖像呢?這在編碼中的術語叫時間冗余,強調的是在一定時間段內如何對連續多幅圖像的冗余部分進行壓縮,術語叫幀間壓縮。

編碼的壓縮

圖像的空間冗余和時間冗余都被壓縮了,壓縮成一串字符串,對這段字符串的展現有沒有進一步壓縮的可能性呢?是所謂的編碼冗余。

所有的視頻編碼技術和標準都是努力對上述三種冗余數據進行壓縮,絞盡腦汁采用不同的算法和策略,產生了不同的結果,也就產生了不同的視頻編碼標準。

編碼的核心技術步驟主要分為預測、變換、量化、熵編碼,這幾步之后還有個可選步驟是濾波。是不是有點懵,現在解釋一下。

預測

一個視頻根據時間采樣被拆成N個圖像,為了壓縮和計算方便,每個圖像被分成多個小塊,比如每個小塊由8×8個像素構成。如果不做壓縮,就需要把每個圖像的每個像素值都存儲起來,一共存儲N幅圖像連接起來,從而構成一個完整的原始視頻。像素值的類型分為圖像的亮度值和色彩值。為了簡化理解 ,本文通篇以亮度值舉例進行講解。

壓縮的第一步是預測。對于一幅圖像的每個塊,根據某幾個相鄰的像素值,在指定的方向上對下一個像素點的值用一個公式做預測,從而得到該點的預測的像素值,來構造完整的圖像。

再比如:有連續兩幅運動圖像 ,對一幅圖像不做改變,保存本來的像素值,然后以此圖像的值為基礎,對另一幅圖像使用公式計算來做運動預測,即把第一幅圖像的某個像素的值,經過公式計算后,預測出第二個圖像指定位置的像素值,以此類推,得到一幅完整的預測出來的圖像。

問題來了,這世上哪有那么牛的算法能計算預測得這么完美?是的,沒有。那預測還有什么用?答案是為了獲取他們的差。差值有什么用?因為差值的絕對值都很小。還是不明白?我們看下圖的三個像素值矩陣:

是不是感覺到了差值矩陣的數據存儲的絕對值比較小?數值小,理論術語上是為了使包含的信息能量變低;是為了到編碼階段,使編碼壓縮的數據量更小,從而壓縮效率更高。這就是預測的作用。

我們有了原圖,又有了特定的預測公式算法,就不需要再去存儲第二幅至相關第N幅的像素原值,只需要存儲它們的差值就行了。如果要解碼,把數據拿來,利用公式還原后再加上差值,就可以把那些被預測的圖像的真面目恢復了。

在一幅圖內做預測,就叫幀內預測;對一系列組圖如一段扣籃動作的視頻做運動軌跡預測,屬于幀間預測。

拿來做基準參考的幀,叫I幀,是關鍵幀,它的信息量最大,只能做幀內壓縮,通常壓縮率很低;而那些后續通過參考I幀的信息做預測獲取差值的圖像,存儲的根本不是原像素值,而是些原始圖像的殘差,叫預測幀。預測幀有時候會混合使用幀內預測和幀間預測,取決于該區塊對那種算法更適應。

根據前一幅圖像來預測得到本幀圖像叫P幀;結合前面的圖像和后面的圖像進行雙向預測計算得到的本幀圖像叫B幀?;谝环P鍵I幀圖像加上一系列相應的預測圖像如B幀、P幀構成的一組圖像叫GOP。

現在該明白別人常說的I幀、B幀、P幀是什么意思了吧?I幀是圖像信息的關鍵;B幀或P幀才是主要被壓縮的地方。

思考:為了降低視頻的網絡傳輸延遲,在CDN上的HLS視頻數據分片是不是越細越好?

答案:不是。切片時要為每一個分片都提供至少一個I幀和一系列P幀、B幀。分得太細,I幀數量反而會變多。I幀太多,就意味著壓縮率變低,網絡傳輸量不降反升。

變換

事情還遠沒結束。雖然通過預測公式降低了眾多像素存儲的編碼信息量,但這還不是壓縮。于是引入了各種變換,如離散余弦變換DCT、小波變換等等。學術上,其目的是將圖像進行從空域到頻域的變化,通過這些所謂的變換濾掉高頻信息,因為人眼對高頻信息不敏感,濾掉一些也無所謂。經典的DCT公式長這樣:

是不是又懵了?好吧,翻譯一下 ,看下面這個圖。變換公式就如同是水果分揀機器,根據某種特點如按體積大小對水果進行歸類,把個頭大的放一堆,個頭小的放一堆。經過變換,實現了物以類聚,后續如果再有需求就可以很容易地進行封箱打包的操作了。

對圖像的變換改變了原來像素信息的空間順序,取而代之的是依據頻率和幅度的存儲方式。但此時的變換,只是改變了隊形,沒有任何實際的壓縮動作。

拿一個8×8的圖像塊舉例,原始圖像塊的像素值如下:

經DCT變換的結果如下圖。

能看出點什么特征嗎?如果還不能,提醒一下:矩陣左上角的數值較大,而右下角的數值較小,且趨近于零值。這就是傳說中的頻率劃分。經過DCT變化,低頻的、幅值高的、重要的信息都被歸置在左上部;而人類不敏感的、高頻的、卻又低振幅的數據都放在了右下側。

這又有什么好處呢?在接下來的量化步驟,就可以對右下側的數據開刀了。因此可以簡單理解,不管是什么A變換還是B變換,不要被它的公式和名稱嚇倒,它只是為了改變隊形,為后續的編碼和壓縮做準備。

量化

到現在為止,仍然沒有進行實質性的壓縮。萬事俱備,只欠量化。它是壓縮前的最后一道工序。量化就好比對剛才站好隊的隊員的身高進行分級打分,通過一個基準步長來計算出每個值的相對數值。又懵了吧? 如下圖:量化前左上角的值為236,步長為8,則量化后它值為236/8 = 30;量化前第二行首元素的值為-22,則量化后為-22/ 8 = -3。

這樣一來,經過量化分級,數據開始變得簡潔明了,但精度也有損失了,損失的大小由量化的步長決定。圖像的失真就是由量化引起的。

回顧,經過上面的DCT變換后以后,數據隊形已準備好;再經過量化,把很多高頻的右下角的數值變為0。對數值進行Z字形掃描,就變成一串數字了 。

針對上面的變換后的值的量化結果為:

30, 0, -3, -1, -2, -2, -1, -1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…

為什么要進行Z字形掃描,因為可以更方便地把0 都聚在一起;為什么0 都會排在右下角?因為經過了DCT變換改變了隊形。 為什么把0聚在一起?為了編碼壓縮啊!

熵編碼

壓縮的第一道工序叫行程編碼。什么是行程編碼?忘掉這個名詞,就是把連續重復的數據的用重復的次數值來表示。看例子,一個原始串:

aaaaaaabbbbccccdddeeddaa

對這個原始串進行行程編碼后,把重復的字母用一個重復的數字來代替,變成了這樣:

7a4b4c3d2e2d2a

這就是行程編碼的思想。行程編碼思想雖然簡單但用處很大,在PNG,GZIP等各種壓縮算法里都有它的影子。

這還不算完,只是壓縮的一小步,第二步就是要對行程編碼后的數據進行變長編碼,如Huffman編碼,這才是壓縮的重頭戲。Huffman編碼主要思路是將出現頻率最高的字符串用最短的碼來替換,從整體上減少了原始數據的長度。網上的討論極多,這里不再詳述,感興趣的也可見我的文章《圖解DEFLATE編解碼》。

編解碼總結

再梳理一下視頻編碼的核心步驟:

? 先做幀內預測和幀間預測,根據關鍵幀來獲取每幅圖像的差值,從而減少存儲的編碼信息量;

? 對其進行變換,完成隊形調整;

? 對數據進行有損量化,將不重要的數據歸零;

? 對量化數據進行特定方向的掃描,將二維數據轉為一維數據;

? 最后進行壓縮,即先進行行程編碼,再使用壓縮編碼。

解碼的步驟只是反其道而行之。

絕大部分的視頻編解碼標準都無一例外地包含這些目標。當然有些標準還考慮了環路濾波,但它不是必選項,這里不做解釋。

編解碼的標準

各大標準之間有什么區別?有了上面的基礎理解后,就比較好解釋了。不同的標準,有的只用了變換,有的用了預測加變換的混合編碼;或者幀內預測算法不一樣,預測方向不一樣,有的支持4個方向,有的支持8個方向;或者變換的算法不一樣,如有的是DCT變換,有的是小波變換;或者熵編碼算法也不一樣,有的是Huffman編碼,有的是算術編碼;等等等等……

具體一點如H.263及之前的編碼標準,會對幀內編碼塊直接進行變換,到了H.264,它提供了基于9種方向的幀內預測;再如到了HEVC / H.265, 采用了基于四叉樹的分塊方式;對于幀間預測提供了8種預測單元的劃分類型,除了支持離散余弦變換DCT,還首次使用了離散正弦變換DST,更有效地實現了對殘差矩陣的變換。

越是最近新出的編碼標準,算法越先進,也越復雜。

最后

以上就是視頻編解碼的基本原理,希望讀了以后能大體明白視頻編解碼原理的基本思路。但如果真想對視頻編解碼的標準和算法細節做深入了解,那就真得要下苦功夫了。文中每個主題,都可以寫出幾本書來。請有理想有毅力的同學繼續前行,祝一切順利!

編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 視頻編解碼
    +關注

    關注

    2

    文章

    54

    瀏覽量

    12085
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    TLV320AIC1x系列單聲道編解碼器:特性、應用與設計要點

    TLV320AIC1x系列單聲道編解碼器:特性、應用與設計要點 在電子設備的音頻處理領域,編解碼器(CODEC)起著至關重要的作用。今天,我們深入探討德州儀器(TI)的TLV320AIC1x系列
    的頭像 發表于 02-04 11:25 ?283次閱讀

    TLV320AIC26:高性能低功耗音頻編解碼器的詳細解析

    TLV320AIC26:高性能低功耗音頻編解碼器的詳細解析 在當今的便攜式計算、通信和娛樂設備中,音頻編解碼器扮演著至關重要的角色。德州儀器(TI)的 TLV320AIC26 音頻編解碼
    的頭像 發表于 02-03 15:05 ?221次閱讀

    深入解析LM4546B AC '97多通道音頻編解碼

    深入解析LM4546B AC '97多通道音頻編解碼器 在當今的電子世界中,音頻編解碼器扮演著至關重要的角色,尤其是在PC系統、便攜式設備以及汽車電子等領域。今天,我們深入探討一款由德州儀器
    的頭像 發表于 02-03 10:50 ?187次閱讀

    瑞芯微RK3562平臺FFmpeg硬件編解碼移植及性能測試實戰攻略

    數字音頻、視頻,提供了錄制、轉換以及流化音視頻的完整解決方案。實測數據(1)2K視頻編解碼,視頻文件大小為103MB硬件
    的頭像 發表于 11-28 19:02 ?1305次閱讀
    瑞芯微RK3562平臺FFmpeg硬件<b class='flag-5'>編解碼</b>移植及性能測試實戰攻略

    視頻編解碼封裝解封裝部件介紹

    是否有探索開源鴻蒙音視頻編解碼技術的欲望?是否對開源鴻蒙音視頻編解碼格式支持有訴求?別急——今天這份開源鴻蒙AVCodec Kit介紹文章,就是解答疑惑的指南!參考這份指南,可以使用開
    的頭像 發表于 10-31 09:15 ?500次閱讀
    音<b class='flag-5'>視頻</b><b class='flag-5'>編解碼</b>封裝解封裝部件介紹

    瑞芯微RK3588平臺FFmpeg硬件編解碼移植及性能測試實戰攻略

    數字音頻、視頻,提供了錄制、轉換以及流化音視頻的完整解決方案。實測數據(1)2K視頻編解碼,視頻文件大小為103MB硬件
    的頭像 發表于 10-21 13:51 ?1750次閱讀
    瑞芯微RK3588平臺FFmpeg硬件<b class='flag-5'>編解碼</b>移植及性能測試實戰攻略

    新唐科技推出低延遲音頻編解碼器NAU88L21C

    Audio CODEC (Audio Coder-Decoder) 是音頻“編解碼器”,主要功能是進行音頻信號的編碼(壓縮)和解碼(解壓)。在音頻信號處理過程中,信號的采集處理,編碼,
    的頭像 發表于 09-30 09:25 ?5955次閱讀
    新唐科技推出低延遲音頻<b class='flag-5'>編解碼</b>器NAU88L21C

    瑞芯微RK3576平臺FFmpeg硬件編解碼移植及性能測試實戰攻略 觸覺智能RK3576開發板演示

    本文介紹瑞芯微RK3576平臺,FFmpeg硬件編解碼移植及性能測試方法。演示設備:觸覺智能RK3576開發板FFmpeg簡介與實測數據FFmpeg簡介FFmpeg是一套多媒體框架,能夠解碼、編碼
    的頭像 發表于 09-08 13:58 ?1269次閱讀
    瑞芯微RK3576平臺FFmpeg硬件<b class='flag-5'>編解碼</b>移植及性能測試實戰攻略 觸覺智能RK3576開發板演示

    增強T-BOX設計,新唐編解碼器的重要作用

    、遠程異常維護和更新。 數據收集和傳輸:安全保護和隱私加密。 多接口擴展:可定制的功能和軟件應用程序。 在T-BOX中,編解碼器(編碼器-解碼器)起著至關重要的作用,充當主要的通信橋梁。其基本功能包括
    發表于 09-05 06:26

    視耀T1 MINI-4路4K編解碼器丨端到端超低延時賦能4K超清視界

    源信號接入,配合動態編解碼通道分配(4編/4解/2編+2解),靈活適配復雜場景需求。 核心技術突破與跨場景適配 采用最新一代編碼技術,T1 MINI支持4路獨立4Kp60 H.265編解碼,可實現
    發表于 08-28 13:43

    基于RK3576的BASE64編解碼

    了BASE64編解碼工具,方便用戶進行數據封裝。文章詳細說明了如何快速上手,包括源碼工程下載、開發環境搭建、例程編譯與運行。此外,還提供了BASE64編解碼API的詳細說明,包括
    的頭像 發表于 05-12 13:41 ?698次閱讀
    基于RK3576的BASE64<b class='flag-5'>編解碼</b>

    5ms低延遲 視頻編解碼模塊迎來關鍵突破

    隨著無人設備的應用越來越廣泛,遠程控制技術也在不斷革新。其中延時時間作為一個關鍵指標,直接決定著遠程控制無人設備等的綜合性能。因此,低帶寬、低延遲的視頻編解碼技術成為必須要突破的技術。編碼延時與
    的頭像 發表于 05-07 17:58 ?530次閱讀
    5ms低延遲    <b class='flag-5'>視頻</b><b class='flag-5'>編解碼</b>模塊迎來關鍵突破

    新一代視頻編解碼標準H.266走向主流 頭部視頻平臺滲透率超70%

    4月21日消息,視頻技術前沿研究與應用研討會近期在北京舉行,活動由阿里巴巴達摩院舉辦,中國網絡視聽協會副會長陶嘉慶等行業專家出席。達摩院視頻技術實驗室負責人葉琰介紹,新一代視頻編解碼
    發表于 04-21 11:24 ?1139次閱讀
    新一代<b class='flag-5'>視頻</b><b class='flag-5'>編解碼</b>標準H.266走向主流 頭部<b class='flag-5'>視頻</b>平臺滲透率超70%

    芯原發布高效的VC9000D_LCEVC視頻解碼器,支持8K超高清

    、低功耗的視頻處理需求,適用于智能電視、機頂盒和移動設備等先進多媒體應用。 LCEVC是動態圖像專家組(MPEG)和國際標準化組織(ISO)聯合發布的最新視頻編碼標準,也即MPEG-5第2部分。該標準定義了一種增強層——當與使用
    的頭像 發表于 04-10 12:35 ?907次閱讀

    迅為iTOP-RK3576開發板/核心板視頻編解碼能力強高性能低功耗的應用處理芯片

    、PyTorch、Caffe等一系列框架的網絡模型。滿足多種應用場景。 iTOP-3576擁有強大的視頻編解碼能力,支持4K@120fps的H.265、VP9、AVS2和AV1解碼器,支持4k@60fps
    發表于 04-07 14:18