為什么同樣的分辨率幀率視頻 ,碼率還不一樣?
編碼器壓縮的度不一樣,所以影響存儲空間和網絡上傳輸帶寬占用。
碼率,也叫做比特率:視頻比特率是指要播放該視頻,所需要每秒讀取的該視頻文件的比特(bit)數。單位為bps(Bit Per Second),比特率越高,每秒讀取數據就越多,同等條件下畫質就越好。
一個原生的視頻,不進行編碼壓縮,要顯示播放,每秒需要的bit數:
一個 這樣的 視頻:
1280 width
720 high
使用色彩空間 YUV 420 ,這個格式每個像素平均占用空間 12bit
幀率 25fps
如果不壓縮,每秒原始的數據量 大小為:
1280 x 720 (總像素) x 12bit(每個像素占用12bit) x 25(一秒25幀) = 276480000 bits = 32.96 x 1024 x 1024 x8
即每秒要用到的數據是 32.96MB.
但是有編碼器的存在,就是為了減少這些存儲傳輸的數據量,比如h264,進行編碼后對應的總的輸出數據(這是數據是壓縮后數據)每秒占用的 空間,稱為碼率(也可以說比特率),一般來說,壓縮率越高,每一幀數據越小,所以碼率越小,壓縮后的視頻質量就會越低,這些取決於內部的壓縮編碼方法。 所以,h264的編碼,是支持 靜態碼率,動態碼率等幾種方式的。即 CBR(Constant Bit Rate)是以恆定比特率方式進行編碼》VBR(Variable Bit Rate)動態比特率,其碼率可以隨着圖像的復雜程度的不同而變化,因此其編碼效率比較高。 一般來說,碼率越低,壓縮率越高,每一幀h264越小。圖像效果越差。碼率越高,不會高過原始碼率(上面分析的不壓縮時候的視頻碼率,高出這個,這個編碼就毫無意義了) 。 剛才所說,編碼器可以支持動態碼率編碼和靜態碼率編碼。如果采用動態碼率編碼,那么這個視頻文件的碼率就是根據實際內容動態變化的,比如某一個畫面場景比較復雜,為了保留更多的圖像細節,編碼器對這些復雜畫面幀的編碼壓縮率相對較小,輸出的h264幀數據比較大,碼率就大,如果只是幾張空白的背景,編碼出來的幀就小得多。
有個疑問,碼率越低,壓縮率越高,是不是意味着編解碼器和解碼要做的工作越多?編碼和解碼耗時也就越長,畢竟要復原圖像,還是需要原圖像的相當的數據量。這么說來,都是犧牲時間來減少空間,所以隨着硬件性能的提升,原本耗時更多的 編解碼方案得以實際可用,就會催生出新的計算更復雜但是壓縮率更大的編解碼方案。
————————————————
版權聲明:本文為CSDN博主「白皮書CAN」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u012459903/java/article/details/88791897