1. 程式人生 > >碼流 / 位元速率 / 位元率 / 幀速率 / 解析度 / 高清的區別

碼流 / 位元速率 / 位元率 / 幀速率 / 解析度 / 高清的區別

GOP/ 碼流 /位元速率 / 位元率 / 幀速率 / 解析度

GOP(Group of picture)

       關鍵幀的週期,也就是兩個IDR幀之間的距離,一個幀組的最大幀數,一般而言,每一秒視訊至少需要使用 1 個關鍵幀。增加關鍵幀個數可改善質量,但是同時增加頻寬和網路負載。

         需要說明的是,通過提高GOP值來提高影象質量是有限度的,在遇到場景切換的情況時,H.264編碼器會自動強制插入一個I幀,此時實際的GOP值被縮短了。另一方面,在一個GOP中,P、B幀是由I幀預測得到的,當I幀的影象質量比較差時,會影響到一個GOP中後續P、B幀的影象質量,直到下一個GOP開始才有可能得以恢復,所以GOP值也不宜設定過大。

        同時,由於P、B幀的複雜度大於I幀,所以過多的P、B幀會影響編碼效率,使編碼效率降低。另外,過長的GOP還會影響Seek操作的響應速度,由於P、B幀是由前面的I或P幀預測得到的,所以Seek操作需要直接定位,解碼某一個P或B幀時,需要先解碼得到本GOP內的I幀及之前的N個預測幀才可以,GOP值越長,需要解碼的預測幀就越多,seek響應的時間也越長。

CABAC/CAVLC

H.264/AVC標準中兩種熵編碼方法,CABAC叫自適應二進位制算數編碼,CAVLC叫前後自適應可變長度編碼,

CABAC:是一種無損編碼方式,畫質好,X264就會捨棄一些較小的DCT係數,位元速率降低,可以將位元速率再降低10-15%(特別是在高位元速率情況下),會降低編碼和解碼的速速。

CAVLC將佔用更少的CPU資源,但會影響壓縮效能。

      幀:當取樣視訊訊號時,如果是通過逐行掃描,那麼得到的訊號就是一幀影象,通常幀頻為25幀每秒(PAL制)、30幀每秒(NTSC制);
      場:當取樣視訊訊號時,如果是通過隔行掃描(奇、偶數行),那麼一幀影象就被分成了兩場,通常場頻為50Hz(PAL制)、60Hz(NTSC制);
      幀頻、場頻的由來:最早由於抗干擾和濾波技術的限制,電檢視像的場頻通常與電網頻率(交流電)相一致,於是根據各地交流電頻率不同就有了歐洲和中國等PAL制的50Hz和北美等NTSC制的60Hz,但是現在並沒有這樣的限制了,幀頻可以和場頻一樣,或者場頻可以更高。
      幀編碼、場編碼方式:逐行視訊幀內鄰近行空間相關性較強,因此當活動量非常小或者靜止的影象比較適宜採用幀編碼方式;而場內相鄰行之間的時間相關性較強,對運動量較大的運動影象則適宜採用場編碼方式。

Deblocking

開啟會減少塊效應。

FORCE_IDR

是否讓每個I幀變成IDR幀,如果是IDR幀,支援隨機訪問。

frame,tff,bff

        --frame 將兩場合並作為一幀進行編碼,--tff Enable interlaced mode (開啟隔行編碼並設定上半場在前),--bff Enable interlaced mode。
        PAFF 和MBAFF:當對隔行掃描影象進行編碼時,每幀包括兩個場,由於兩個場之間存在較大的掃描間隔,這樣,對運動影象來說,幀中相鄰兩行之間的空間相關性相對於逐行掃描時就會減小,因此這時對兩個場分別進行編碼會更節省碼流。

       對幀來說,存在三種可選的編碼方式:將兩場合並作為一幀進行編碼(frame 方式)或將兩場分別編碼(field 方式)或將兩場合並起來作為一幀,但不同的是將幀中垂直相鄰的兩個巨集塊合併為巨集塊對進行編碼;前兩種稱為PAFF 編碼,對運動區域進行編碼時field 方式有效,對非運區域編碼時,由於相鄰兩行有較大的相關性,因而frame 方式會更有效。當影象同時存在運動區域和非運動區域時,在MB 層次上,對運動區域採取field 方式,對非運動區域採取frame 方式會更加有效,這種方式就稱為MBAFF,預測的單位是巨集塊對。


碼流 / 位元速率 

 碼流(Data Rate)是指視訊檔案在單位時間內使用的資料流量,也叫位元速率或碼流率,通俗一點的理解就是取樣率,是視訊編碼中畫面質量控制中最重要的部分,一般我們用的單位是kb/s或者Mb/s。一般來說同樣解析度下,視訊檔案的碼流越大,壓縮比就越小,畫面質量就越高。碼流越大,說明單位時間內取樣率越大,資料流,精度就越高,處理出來的檔案就越接近原始檔案,影象質量越好,畫質越清晰,要求播放裝置的解碼能力也越高。

  當然,碼流越大,檔案體積也越大,其計算公式是檔案體積=時間X位元速率/8。例如,網路上常見的一部90分鐘1Mbps碼流的720P RMVB檔案,其體積就=5400秒×1Mb/8=675MB。

  通常來說,一個視訊檔案包括了畫面及聲音,例如一個RMVB的視訊檔案,裡面包含了視訊資訊和音訊資訊,音訊及視訊都有各自不同的取樣方式和位元率,也就是說,同一個視訊檔案音訊和視訊的位元率並不是一樣的。而我們所說的一個視訊檔案碼流率大小,一般是指視訊檔案中音訊及視訊資訊碼流率的總和。

以以國內最流行,大家最熟悉的RMVB視訊檔案為例,RMVB中的VB,指的是VBR,即Variable Bit Rate的縮寫,中文含義是可變位元率,它表示RMVB採用的是動態編碼的方式,把較高的取樣率用於複雜的動態畫面(歌舞、飛車、戰爭、動作等),而把較低的取樣率用於靜態畫面,合理利用資源,達到畫質與體積可兼得的效果。

位元速率和取樣率最根本的差別就是位元速率是針對原始檔來講的。

取樣率

   取樣率(也稱為取樣速度或者取樣頻率)定義了每秒從連續訊號中提取並組成離散訊號的取樣個數,它用赫茲(Hz)來表示。取樣率是指將模擬訊號轉換成數字訊號時的取樣頻率,也就是單位時間內取樣多少點。一個取樣點資料有多少個位元。位元率是指每秒傳送的位元(bit)數。單位為 bps(Bit Per Second),位元率越高,傳送的資料越大,音質越好.位元率 =取樣率 x 採用位數 x聲道數.

   取樣率類似於動態影像的幀數,比如電影的取樣率是24赫茲,PAL制式的取樣率是25赫茲,NTSC制式的取樣率是30赫茲。當我們把取樣到的一個個靜止畫面再以取樣率同樣的速度回放時,看到的就是連續的畫面。同樣的道理,把以44.1kHZ取樣率記錄的CD以同樣的速率播放時,就能聽到連續的聲音。顯然,這個取樣率越高,聽到的聲音和看到的影象就越連貫。當然,人的聽覺和視覺器官能分辨的取樣率是有限的,基本上高於44.1kHZ取樣的聲音,絕大部分人已經覺察不到其中的分別了。

而聲音的位數就相當於畫面的顏色數,表示每個取樣的資料量,當然資料量越大,回放的聲音越準確,不至於把開水壺的叫聲和火車的鳴笛混淆。同樣的道理,對於畫面來說就是更清晰和準確,不至於把血和西紅柿醬混淆。不過受人的器官的機能限制,16位的聲音和24位的畫面基本已經是普通人類的極限了,更高位數就只能靠儀器才能分辨出來了。比如電話就是3kHZ取樣的7位聲音,而CD是44.1kHZ取樣的16位聲音,所以CD就比電話更清楚。

當你理解了以上這兩個概念,位元率就很容易理解了。以電話為例,每秒3000次取樣,每個取樣是7位元,那麼電話的位元率是21000。 而CD是每秒 44100次取樣,兩個聲道,每個取樣是13位PCM編碼,所以CD的位元率是44100*2*13=1146600,也就是說CD每秒的資料量大約是 144KB,而一張CD的容量是74分等於4440秒,就是639360KB=640MB。

位元速率和取樣率最根本的差別就是位元速率是針對原始檔來講的。

位元率

位元率是指每秒傳送的位元(bit)數。單位為bps(Bit Per Second),位元率越高,傳送的資料越大。在視訊領域,位元率常翻譯為位元速率 !!!

位元率表示經過編碼(壓縮)後的音、視訊資料每秒鐘需要用多少個位元來表示,而位元就是二進位制裡面最小的單位,要麼是0,要麼是1。位元率與音、視訊壓縮的關係,簡單的說就是位元率越高,音、視訊的質量就越好,但編碼後的檔案就越大;如果位元率越少則情況剛好相反。

位元率是指將數字聲音、視訊由模擬格式轉化成數字格式的取樣率,取樣率越高,還原後的音質、畫質就越好。

常見編碼模式:

  VBR(Variable Bitrate)動態位元率 也就是沒有固定的位元率,壓縮軟體在壓縮時根據音訊資料即時確定使用什麼位元率,這是以質量為前提兼顧檔案大小的方式,推薦編碼模式;

  ABR(Average Bitrate)平均位元率 是VBR的一種插值引數。LAME針對CBR不佳的檔案體積比和VBR生成檔案大小不定的特點獨創了這種編碼模式。ABR在指定的檔案大小內,以每50幀(30幀約1秒)為一段,低頻和不敏感頻率使用相對低的流量,高頻和大動態表現時使用高流量,可以做為VBR和CBR的一種折衷選擇。

  CBR(Constant Bitrate),常數位元率 指檔案從頭到尾都是一種位速率。相對於VBR和ABR來講,它壓縮出來的檔案體積很大,而且音質相對於VBR和ABR不會有明顯的提高。

幀速率

幀速率也稱為FPS(Frames PerSecond)的縮寫——幀/秒。是指每秒鐘重新整理的圖片的幀數,也可以理解為圖形處理器每秒鐘能夠重新整理幾次。越高的幀速率可以得到更流暢、更逼真的動畫。每秒鐘幀數(FPS)越多,所顯示的動作就會越流暢。

解析度

就是幀大小每一幀就是一副影象。

640*480解析度的視訊,建議視訊的碼速率設定在700以上,音訊取樣率44100就行了

一個音訊編位元速率為128Kbps,視訊編位元速率為800Kbps的檔案,其總編位元速率為928Kbps意思是經過編碼後的資料每秒鐘需要用928K位元來表示。

   計算輸出檔案大小公式:
(音訊編位元速率(KBit為單位)/8 +視訊編位元速率(KBit為單位)/8×影片總長度(秒為單位)=檔案大小(MB為單位)

2,高清視訊

目前的720P以及1080P採用了很多種編碼,例如主流的MPEG2,VC-1以及H.264,還有Divx以及Xvid,至於封裝格式更多到令人髮指,ts、mkv、wmv以及藍光專用等等。

720和1080代表視訊流的解析度,前者1280*720,後者1920*1080,不同的編碼需要不同的系統資源,大概可以認為是H.264>VC-1>MPEG2。   

VC-1是最後被認可的高清編碼格式,不過因為有微軟的後臺,所以這種編碼格式不能小窺。相對於MPEG2,VC-1的壓縮比更高,但相對於H.264而言,編碼解碼的計算則要稍小一些,目前來看,VC-1可能是一個比較好的平衡,輔以微軟的支援,應該是一隻不可忽視的力量。一般來說,VC-1多為 “.wmv”字尾,但這都不是絕對的,具體的編碼格式還是要通過軟體來查詢。

總的來說,從壓縮比上來看,H.264的壓縮比率更高一些,也就是同樣的視訊,通過H.264編碼演算法壓出來的視訊容量要比VC-1的更小,但是VC-1 格式的視訊在解碼計算方面則更小一些,一般通過高效能的CPU就可以很流暢的觀看高清視訊。相信這也是目前NVIDIA Geforce 8系列顯示卡不能完全解碼VC-1視訊的主要原因。

PS&TS是兩種視訊或影片封裝格式,常用於高清片。副檔名分別為VOB/EVO和TS等;其檔案編碼一般用MPEG2/VC-1/H.264

 高清,英文為“High Definition”,即指“高解析度”。 高清電視(HDTV),是由美國電影電視工程師協會確定的高清晰度電視標準格式。現在的大螢幕液晶電視機,一般都支援1080i和720P,而一些俗稱的全高清”(Full HD),則是指支援1080P輸出的電視機。

目前的高清視訊編碼格式主要有H.264、VC-1、MPEG-2、MPEG-4、DivX、XviD、WMA-HD以及X264。事實上,現在網路上流傳的高清視訊主要以兩類檔案的方式存在:一類是經過MPEG-2標準壓縮,以tp和ts為字尾的視訊流檔案;一類是經過WMV-HD(Windows Media Video HighDefinition)標準壓縮過的wmv檔案,還有少數檔案字尾為avi或mpg,其性質與wmv是一樣的。真正效果好的高清視訊更多地以H.264與VC-1這兩種主流的編碼格式流傳。

一般來說,H.264格式以“.avi”、“.mkv”以及“.ts”封裝比較常見。

位率(定位元速率,變位元速率)

     位率又稱為“位元速率”。指單位時間內,單個錄影通道所產生的資料量,其單位通常是bps、Kbps或Mbps。可以根據錄影的時間與位率估算出一定時間內的錄影檔案大小。  位率是一個可調引數,不同的解析度模式下和監控場景下,合適的位率大小是不同的。在設定時,要綜合考慮三個因素:   
1、解析度   
        解析度是決定位率(位元速率)的主要因素,不同的解析度要採用不同的位率。總體而言,錄影的解析度越高,所要求的位率(位元速率)也越大,但並不總是如此,圖1說明了不同解析度的合理的位元速率選擇範圍。所謂“合理的範圍”指的是,如果低於這個範圍,影象質量看起來會變得不可接受;如果高於這個範圍,則顯得沒有必要,對於網路資源以及儲存資源來說是一種浪費。   
2、場景   
        監控的場景是設定位元速率時要考慮的第二個因素。在視訊監控中,影象的運動劇烈程度還與位率有一定的關係,運動越劇烈,編碼所要求的位元速率就越高。反之則越低。因此在同樣的影象解析度條件下,監控人多的場景和人少的場景,所要求的位率也是不同的。   
3、儲存空間   
        最後需要考量的因素是儲存空間,這個因素主要是決定了錄影系統的成本。位率設定得越高,畫質相對會越好,但所要求的儲存空間就越大。所以在工程實施中,設定合適的位率即可以保證良好的回放影象質量,又可以避免不必要的資源浪費。   
位率型別   
位率型別又稱為位元速率型別,共有兩種——動態位元速率(VBR)和固定位元速率(CBR)。所謂動態位元速率是指編碼器在對影象進行壓縮編碼的過程中,根據影象的狀況實時調整位元速率高低的過程,例如當影象中沒有物體在移動時,編碼器自動將位元速率調整到一個較低的值。但當影象中開始有物體移動時,編碼器又自動將位元速率調整到一個較高的值,並且實時根據運動的劇烈程度進行調整。這種方式是一種影象質量不變,資料量變化的編碼模式。   
        固定位元速率是指編碼器在對影象進行編碼的過程中,自始至終採用一個固定的位元速率值,不論影象情況如何變化。這種方式是位元速率量不變,而影象質量變化的編碼模式。在動態位元速率模式下,我們在硬碟錄影機上設定的位率值稱為“位率上限”。意思是我們人為設定一個編碼位元速率變化的上限,可以低於,但不能高於。根據這個位率值,我們可以估算出一定時間內的儲存容量的上限值。   
        在固定位元速率模式下,在硬碟錄影機上設定的位率值就是編碼時所使用的位率值,根據這個數值,我們可以精確地估算出一定時間內的儲存容量。

QP(quantizer parameter)

介於0~31之間,值越小,量化越精細,影象質量就越高,而產生的碼流也越長。 

PSNR

允許計算峰值信噪比(PSNR,Peak signal-to-noise ratio),編碼結束後在螢幕上顯示PSNR計算結果。開啟與否與輸出的視訊質量無關,關閉後會帶來微小的速度提升。

profile level

分別是BP、EP、MP、HP:
  1、BP-Baseline Profile:基本畫質。支援I/P 幀,只支援無交錯(Progressive)和CAVLC;
  2、EP-Extended profile:進階畫質。支援I/P/B/SP/SI 幀,只支援無交錯(Progressive)和CAVLC;
  3、MP-Main profile:主流畫質。提供I/P/B 幀,支援無交錯(Progressive)和交錯(Interlaced),也支援CAVLC 和CABAC 的支援;
  4、HP-High profile:高階畫質。在main Profile 的基礎上增加了8x8內部預測、自定義量化、無損視訊編碼和更多的YUV 格式;

H.264規定了三種檔次,每個檔次支援一組特定的編碼功能,並支援一類特定的應用。
1)基本檔次:利用I片和P片支援幀內和幀間編碼,支援利用基於上下文的自適應的變長編碼進行的熵編碼(CAVLC)。主要用於可視電話、會議電視、無線通訊等實時視訊通訊;
2)主要檔次:支援隔行視訊,採用B片的幀間編碼和採用加權預測的幀內編碼;支援利用基於上下文的自適應的算術編碼(CABAC)。主要用於數字廣播電視與數字視訊儲存;
3)擴充套件檔次:支援碼流之間有效的切換(SP和SI片)、改進誤碼效能(資料分割),但不支援隔行視訊和CABAC。主要用於網路的視訊流,如視訊點播。

Reference

指兩個P幀之間的距離。

主碼流/副碼流

主碼流位率高,影象質量高,便於本地儲存;副碼流位率低,影象質量低,便於網路傳輸。

總結:

編碼引數不能只知道幀率,位元速率,I幀間隔,QP因子,更要知道其他引數的作用。