1. 程式人生 > >GOP/ 碼流 /位元速率 / 位元率 / 幀速率 / 解析度【轉】

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

來自:http://blog.csdn.net/xiangjai/article/details/44238005

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因子,更要知道其他引數的作用。

相關推薦

GOP/ /位元速率 / 位元 / 速率 / 解析度

來自:http://blog.csdn.net/xiangjai/article/details/44238005 GOP(Group of picture)        關鍵幀的週期,也就是兩個IDR幀之間的距離,一個幀組的最大幀數,一般而言,每一秒視訊至少需要

git代倉庫遷移(從github到oschina)

mit tail name usr done git blank com detail 轉自:http://blog.csdn.net/a5244491/article/details/44807937 版權聲明:本文為博主原創文章,未經博主允許不得轉載。

GOP/ /位元速率 / 位元 / 速率 / 解析度

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

FFmpeg入門-- / 位元速率 / 位元 / 速率 / 解析度 1

I、P、B 幀 I 幀(Intracoded frames):I 幀影象採用幀內編碼方式,即只利用了單幀影象內的空間相關性,而沒有利用時間相關性。I 幀使用幀內壓縮,不使用運動補償,由於I 幀不依賴其它幀,所以是隨機存取的入點,同時是解碼的基準幀。I 幀主要用於接收機的初始化和通

/ 位元速率 / 位元 / 速率 / 解析度 / 高清等的理解

碼流 / 位元速率 / 位元率 / 幀速率 / 解析度 / 高清 1, 碼流 /位元速率 / 位元率 / 幀速率 / 解析度 碼流 / 位元速率   碼流(Data Rate)是指視訊檔案在單位時間內使用的資料流量,也叫位元速率或碼流率,通俗一點的理解就是取樣率

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

GOP/ 碼流 /位元速率 / 位元率 / 幀速率 / 解析度GOP(Group of picture)       關鍵幀的週期,也就是兩個IDR幀之間的距離,一個幀組的最大幀數,一般而言,每一秒視訊至少需要使用 1 個關鍵幀。增加關鍵幀個數可改善質量,但是同時增加頻寬和網

/ 位元速率 / 位元 / 速率 / 解析度

一個任務,根據客戶的上傳的視訊,需要使用ffmpeg進行轉碼操作。瞭解了下視訊轉碼的相關術語。 1, 碼流 /位元速率 / 位元率 / 幀速率 / 解析度 碼流 / 位元速率   碼流(Data Rate)是指視訊檔案在單位時間內使用的資料流量,也叫位

H264/H265的編碼位元速率設定

H264/H265碼流的編碼位元速率設定   一、什麼是視訊位元速率?            視訊位元速率是視訊資料(視訊色彩量、亮度量、畫素量)每秒輸出的位數。一般用的單位是kbps。   二、設定

WireShark 查看UDP的丟包

image 技術分享 sha png streams ima wireshark wire 分享圖片 1.用wireshark抓包之後,右擊,點decode as,轉化為RTP 2. 點show all streams 3.分析 WireShark 查看UDP碼流的丟包

Android 4.0 Launcher2源分析——啟動過程分析

handler flag 這一 第一次啟動 asynctask pla size ontouch wait Android的應用程序的入口定義在AndroidManifest.xml文件中可以找出:[html] <manifest xmlns:android="htt

Magenta源代筆記(3) —— 內存管理

sys priority them 根據 內存信息 add trie ldm csdn 轉自:http://blog.csdn.net/boymax2/article/details/52550197 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 Mag

dlib代解讀人臉檢測器的訓練

sta aced ace left 階段 保存 顯示 聯合 版權 轉自:http://blog.csdn.net/elaine_bao/article/details/53046542 版權聲明:本文為博主原創文章,轉載請註明。 目錄(?)[-]

生成一個空白BMP的簡單代

bis 對齊 bsp har let net html fwrite handle 轉自:http://blog.chinaunix.net/uid-15063109-id-4275395.html 做圖像處理時,有時需要臨時生成圖使用。以下是生成320x240 24

100行代實現最簡單的基於FFMPEG+SDL的視頻播放器(SDL1.x)

工程 全屏 升級版 gin avcodec ive 系列文章 相同 hello 轉自:http://blog.csdn.net/leixiaohua1020/article/details/8652605 版權聲明:本文為博主原創文章,未經博主允許不得轉載。

Linux下git源安裝

lac itl 允許 pla rom code ins 8.0 代碼 轉自:http://blog.csdn.net/u012889638/article/details/51167123 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 版本信息:Cent

linux平臺從源安裝git

三方 源碼 tails ace clas rect 應該 結果 下一步 轉自:http://blog.csdn.net/lianshaohua/article/details/50571560 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 如果是ubun

strlen源

title ont return min 最簡 至少 xxxxxxxx until 元素 strlen源碼剖析 學習高效編程的有效途徑之一就是閱讀高手寫的源代碼,CRT(C/C++ Runtime Library)作為底層的函數庫,實現必然高效。恰好手中就有glibc和VC

WebView的JavaScript與本地代三種交互方式

添加 lba 文件 abr cli 漏洞 大致 execution span WebView的漏洞分析 漏洞產生的原因 最近在開發過程中遇到一個問題,就是 WebView 使用的時候,還是需要解決之前系統(4.2之前)導致的一個漏洞,雖然現在這個系統版本用戶很少了,但是也不

SSM框架——使用MyBatis Generator自動創建代

jar包 mage blank 使用 log hub java == date 最近要開發個小工具,所以又自學了下SSM框架,以下是參考網文 通過自己實踐修改,親測通過。     這兩天需要用到MyBatis的代碼自動生成的功能,由於MyBatis屬於一種半自動的ORM

H.264編碼原理以及IBP

獨立 像素 疊加 提高 oss 解壓 防止 相同 大小 轉自:http://www.cnblogs.com/herenzhiming/articles/5106178.html 前言 ----------------------- H264是新一代的編碼標準,