視頻流整理

碼流的計算

  • 分辨率
  1. x軸的像素個數*y軸的像素個數
  2. 常見的寬高比:16:9    4:3
  3. 360P/720P/1K/2K:這些都是16:9的寬高比,其中360P爲640*360;720P爲1280*720;1K爲1920*1080,即1080P;2K爲2560*1440,即1440P。
  • 幀率
  1. 每秒鐘採集/播放圖像的個數
  2. 常見的幀率:15幀/s,30幀/s,60幀/s
  • 未編碼視頻的RGB碼流

RGB碼流=分辨率(寬*高)*3(通道)*幀率(25幀/s)。例如:1280*720*3*25=69120000,約69M

  • YUV

YUV是一種圖像格式,具體可以參考OpenCV 計算機視覺整理 中的 YUV。

YUV數據量爲:

  1. YUV=Y * 1.5
  2. YUV=RGB / 2

H264編碼原理

H264壓縮比

條件:

  1. YUV格式爲YUV420P
  2. 分辨率爲640*480
  3. 幀率爲15幀/s

它的碼流爲:640*480*1.5*15=6912000,單位爲字節,換算比特爲6912000*8=55296000,將近55M。

在網上傳播的視頻建議的碼流爲500kpbs,那麼它的壓縮比約爲1/100.

這個500kpbs的參考值是一個經驗值,來源於https://docs.agora.io/cn

GOP

上圖是一個幀率爲25幀/s的視頻,幀與幀之間的間隔爲40ms。整段視頻只有1s,現在我們將這1s鐘的視頻變爲10min。

這樣就意味着幀數就非常多了,25*10*60=15000幀。對於這麼多的幀,那麼壓縮起來就會比較困難。

這樣,我們就會依據幀與幀之間的相關性進行分組。如上圖中就是分成了兩組,一組是人看望遠鏡的相關動作,它們可能看望遠鏡的角度不同;另一組是人使用計算機,只是敲鍵盤的動作不同。這樣我們把相關的組稱爲GOP(group of picture)。GOP中幀與幀之間的差別小。

在同一個GOP中,以上圖爲例,我們可以看見,人的頭髮基本是相同的,可以放在一張圖中;另外,不同的地方在於鏡頭、身體,對於這些差值再重新分組,通過這一個GOP之後,GOP的這一組幀進行壓縮的時候,會壓縮的非常小,只需要存很少的數據就可以將原來的一組幀還原回來。

I/P/B幀

  • 編碼幀的分類
  1. I幀(intraframe frame),關鍵幀,採用幀內壓縮技術。GOP中的第一幀爲I幀,且是一種特殊的I幀,稱爲IDR幀,IDR幀屬於I幀,但I幀不一定是IDR幀。一組幀中有很多幀。如果超過了一定範圍,對於H264來說,它會強制加入I幀,防止出現錯誤的時候,錯誤出現串聯。I幀是不依賴於任何參考幀的,它屬於幀內壓縮技術,它自己編碼,自己還原,跟其他幀沒有任何關係。
  2. P幀(forward Predicted frame),向前參考幀。壓縮時,只參考前面已經處理的幀(前面的幀解碼後才能解碼P幀,不能單獨解碼P幀),採用幀間壓縮技術。它佔I幀的一半大小。
  3. B幀(Bidirectionally predicted frame),雙向參考幀。壓縮時,即參考前面已經處理的幀,也參考後面的幀,幀間壓縮技術。它佔I幀\(1\over 4\)大小。
  4. 播放的時候是先播放I幀,B幀,P幀;但是解碼的時候是先解碼I幀,P幀,B幀。一般在實時通訊場景中,只有I幀和P幀,沒有B幀。但是在視頻轉碼的過程中會大量使用B幀,節省空間。
  • IDR幀與I幀的區別與聯繫
  1. IDR(Instantaneous Decoder Refresh)解碼器立即刷新。
  2. 每當遇到IDR幀時,解碼器就會清空解碼器參考buffer中的內容。在解碼器端遇到IDR幀之後,會清空緩衝區,全部重新來過。
  3. 每個GOP中的第一幀就是IDR幀。
  4. IDR幀是一種特殊的I幀。

IDR幀起到防止錯誤傳播的作用。

幀與分組的關係

上圖的視頻幀分成了兩個GOP,GOP的第一幀一定是I幀也是IDR幀,對於H264來說,I幀後面會跟3個B幀,然後接1個P幀,以此往復。在解碼的過程中,第一個肯定是解碼I幀,對於第2、3、4的B幀來說,它們都依賴於I幀和後面的P幀,所以先解碼的一定是P幀,然後才能解碼中間的3個B幀。而B幀與B幀之間是沒有任何參考的。前面的IBBBP幀解碼完成之後,第二組的3個B幀則依賴於前面的P幀和後面的P幀,而後面的P幀則是依賴於前面的P幀,以此往復。

這裏需要說明的是,無論是I、B、P一旦解碼完成後就都是完整的圖像了,所以播放的時候一定是按照順序播放的,不再有I、B、P之分。

SPS於PPS

SPS(Sequence Parameter Set)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章