網易視頻雲:視頻壓縮編碼淺談

  在這個全民直播時代,用戶對視覺信息表達愈來愈重視,也愈來愈強調提升視頻主觀質量的需求,今天,咱們就帶着這些用戶問題,討論下視頻壓縮編碼這項技術
  1. 視頻爲何要壓縮?
  視頻即連續的圖像,數字化後的圖像或視頻信息是海量的,舉一個具體的例子,攝像頭拍攝的一幅靜態圖像空間像素點(畫面大小,也即分辨率) 640*480 個,每一個像素點由RGB三元素組成,每一個元素由8bit二進制位表達,則一副數字圖像的大小爲:
   640*480*3*8 = 7372800 bits
  視頻是由不少幅圖像組成,人眼感知視頻播放流暢通常爲24fps(frame persecond,簡稱fps),根據視覺暫留原理,要達到最基本的視頻播放效果大約也須要10fps的速度,咱們這裏以24fps表明通常狀況,電影膠捲都是以這個幀率在拍攝,也就是視頻的1秒由24幅靜態圖像組成,則一秒產生的視頻信號量爲:
  
  640*480*3*8*24 = ?172 mbps,
  原始視頻的大小因而可知,一秒耗盡172m,若是咱們是在4g下直播,不到6秒就消耗1g流量,那直播不超過幾分鐘,流量包就爆啦,
  2. 視頻爲何能壓縮?
  壓縮編碼的前提是信息存在冗餘,去掉冗餘的信息,達到壓縮的目的。那麼視頻信息有冗餘麼?固然有,視頻信息做爲普通的計算機信息數據一種,首先就存在着統計冗餘,譬如咱們發送一個視頻文件給對方,咱們會先嚐試將其像其它普通文本文件同樣用zip或rar壓縮一下,減少一下空間和傳輸帶寬消耗。其次,視頻做爲圖像,存在空間冗餘,一副數字化的圖像各個像素點的值是緩慢變化的,像素值與其周圍幾個像素點的值具備很大的相關性,譬如一副圖像的背景是一大片的紅色,這不少同樣的像素值就是空間上的冗餘。再次,視頻做爲運動着的圖像,存在時間冗餘,即用視頻採集設備拍攝的一幅幅圖像之間是緩慢變化的,連續兩個或多個圖像之間是存在相關性的。最後,視頻做爲人眼視覺感知,存在視覺冗餘,人眼對視頻的激烈變化的部分每每不敏感,就如人耳對20-20000分貝之外的聲音不明感同樣,正是這種人眼視覺冗餘,提供了咱們視頻有損壓縮的前提條件。
  3. 視頻如何壓縮?
  壓縮方法從大的方面分爲 有損壓縮,無損壓縮,譬如咱們用zip給任意文件打包壓縮,壓縮包可以經過解zip恢復成原來的文件,毫髮無傷,全部數據信息沒有任何丟失,這種壓縮方式就是無損壓縮,無損壓縮有其卓越的優勢:保真性,在一些衛星傳圖,醫學X光圖像視頻等領域顯得尤其重要,而後,它也有缺點,那就是壓縮率不高,大概在 2 到5倍率 之間。
  另外一種是 有損壓縮,譬如壓縮圖像或者視頻時,會根據人眼視覺感知特性,對那些人眼不敏感的數據不傳輸,犧牲一部分不重要的信息,來提升壓縮率,固然壓縮包通過解壓也沒法恢復那部分數據了,信息就丟失了,壓縮解壓後的圖和原始的圖是有差別的,這也就解釋了 "主播看到本身的預覽視頻這麼美,這麼清晰,爲何觀衆看到的卻有點模糊呢?"?
  視頻信息的壓縮混合了有損以及無損壓縮編碼方法,通常咱們直播應用中的視頻壓縮都是採用有損壓縮方式,來提升壓縮率,下降存儲以及傳輸帶寬,通常標準視頻編碼的壓縮率能達到幾十倍甚至幾百倍
  4. 視頻壓縮編碼的主流技術H264編碼介紹
  從 上世紀八十年代的推出第一代視頻編碼標準H120開始到如今的下一代視頻編碼H265,視頻編碼技術的發展一直吸引着工業界以及學術界的共同關注。其中國際組織:聯合視頻組(JVT)竭盡全力的致力於視頻編碼標準的發展,不斷提升視頻壓縮效率。
  從目前市場運用上看,不管是互聯網應用,仍是硬件芯片集成,最主流的視頻編碼技術依然是H264,下面結合壓縮理論簡單介紹下H264所採用的編碼技術
  1) 去除數據統計冗餘:H264採用兩種熵編碼方式: CAVLC ( 基於上下文的可變字長編碼)和CABAC(基於上下文的二進制算數編碼),CAVLC實現相對簡單,編碼效率高,但壓縮率要比CABAC低15%左右,CABAC複雜度高,能夠分場景採用不一樣的熵編碼,讓視頻壓縮後的平均碼長接近信源熵值。
  
  2) 去除時間shang冗餘:H264 採用幀間預測編碼,當前像素塊的編碼參考以前已經編碼重建幀的相應像素塊,當前圖像與前面的參考圖像很類似(譬如視頻畫面相對靜止)這時候幀間預測殘差會很小,碼率很低,相反,畫面改變越大越快,幀間預測殘差值就越大,壓縮須要的bit數九越多,這也就解釋了,當設定的最大容許碼率必定的狀況下「爲何主播的手機晃動起來,畫面就有點模糊,不動就好清晰好清晰呢」。
  3) 去除空間冗餘:H264採用幀內預測編碼方式,當前像素編碼參考以前已經編碼重建的像素值進行,若是像素變化緩慢,那麼預測殘差將會很小,甚至爲0,碼率大大下降,這也就是爲何 咱們傳輸黑色視頻(手機攝像頭被遮住),或者其餘純色視頻,碼率很低,設置的最大碼率根本用不掉的緣由。除此之外,H264採用變換編碼的方式,將殘差從空間域利用DCT(離散餘弦變換)變換到頻率域,結合差別量化編碼方式,更進一步的去除空間冗餘
  4) 去除人眼視覺冗餘:H264編碼器的輸入圖像或視頻的色彩空間採樣格式通常爲YUV420,不一樣於RGB採樣,YUV420利用人眼視覺對像素亮度份量更敏感,而色度份量沒那麼敏感,進一步將圖像或視頻的色度份量作2:1的採樣,4個亮度份量,2個色度份量,另外,H264 採用量化編碼的有損編碼方式,也正是利用了人眼視覺對高頻細節部分不敏感的理論基礎,將殘差係數低頻部分採用更細的量化參數,而高頻部分則粗化量化,通常的視頻壓縮失真也正是這個階段產生。
  當咱們對視頻壓縮技術有個大概的瞭解以後,咱們就能夠回答:「如何提升觀衆端的視頻清晰度呢?」,當給定的編碼器壓縮率達到極限時,咱們惟一能作的就是提升視頻編碼碼率了。
 編碼

相關文章
相關標籤/搜索