1. 程式人生 > >[ffmpeg]視訊幀率、視訊碼流與視訊解析度相關知識

[ffmpeg]視訊幀率、視訊碼流與視訊解析度相關知識

一、幀率、碼流與解析度

  幀率概念

  一幀就是一副靜止的畫面,連續的幀就形成動畫,如電檢視象等。我們通常說幀數,簡單地說,就是在1秒鐘時間裡傳輸的圖片的數,也可以理解為圖形 處理器每秒鐘能夠重新整理幾次,通常用fps(Frames Per Second)表示。每一幀都是靜止的圖象,快速連續地顯示幀便形成了運動的假象。高的幀率可以得到更流暢、更逼真的動畫。每秒鐘幀數 (fps) 愈多,所顯示的動作就會愈流暢。

  碼流概念碼流(Data Rate),是指視訊檔案在單位時間內使用的資料流量,也叫位元速率,是他是視訊編碼中畫面質量控制中最重要的部分。同樣解析度下,視訊檔案的碼流越大,壓縮比就越小,畫面質量就越高。

  解析度概念視訊解析度是指視訊成像產品所成影象的大小或尺寸。常見的視像解析度有352×288,176×144,640×480,1024×768。在成像的兩組數字中,前者為圖片長度,後者為圖片的寬度,兩者相乘得出的是圖片的畫素,長寬比一般為4:3。

二、用碼流和時間計算流媒體檔案大小

    編位元速率/位元率直接與檔案體積有關。且編位元速率與編碼格式配合是否合適,直接關係到視訊檔案是否清晰。 
在視訊編碼領域,位元率常翻譯為編位元速率,單位是Kbps,例如800Kbps 
其中, 1K=1024 1M=1024K 
b 為 位元(bit) 這個就是電腦檔案大小的計量單位,1KB=8Kb,區分大小寫,B代表位元組(Byte) 
s 為 秒(second) 
p 為 每(per) 
以800kbps來編碼表示經過編碼後的資料每秒鐘需要用800K位元來表示。

 
1MB=8Mb=1024KB=8192Kb


    Windows系統檔案大小經常用B(位元組)為單位表示,但網路運營商則用b(位元),也就是為什麼512K速度寬頻在電腦上顯示速度最快只有約64K的原因,網路運營商宣傳網速的時候省略了計量單位。 
    完整的視訊檔案是由音訊流與視訊流2個部分組成的,音訊和視訊分別使用的是不同的編位元速率,因此一個視訊檔案的最終技術大小的編位元速率是音訊編位元速率+視訊編碼 率。例如一個音訊編位元速率為128Kbps,視訊編位元速率為800Kbps的檔案,其總編位元速率為928Kbps,意思是經過編碼後的資料每秒鐘需要用928K 位元來表示。 
    瞭解了編位元速率的含義以後,根據視訊播放時間長度,就不難了解和計算出最終檔案的大小。編位元速率也高,視訊播放時間越長,檔案體積就越大。不是解析度越大檔案 就越大,只是一般情況下,為了保證清晰度,較高的解析度需要較高的編位元速率配合,所以使人產生解析度越大的視訊檔案體積越大的感覺。

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


這樣以後大家就能精確的控制輸出檔案大小了。 
例:有一個1.5小時(5400秒)的影片,希望轉換後文件大小剛好為700M 
計算方法如下: 
700×8÷5400×1024≈1061Kbps 
意思是隻要音訊編位元速率加上視訊編位元速率之和為1061Kb,則1個半小時的影片轉換後文件體積大小剛好為700M。


至於音訊編位元速率和視訊編位元速率具體如何設定,就看選擇的編碼格式和個人喜好了,只要2者之和為1061即可。如可以設定為視訊編碼格式H264,視訊編位元速率900 Kbps,音訊編碼格式AAC,編位元速率161 Kbps。 
與檔案體積大小有關的位元速率是指的平均位元速率,因此,不論是使用固定位元一次編碼方式還是使用二次(多次)動態編碼方式,都是可以保證檔案大小的。只有使用基於質量編碼的方式的時候,檔案大小才不可控制。

編碼格式有很多種,在技術不斷進步的情況下,針對不同的用途,產生了各種編碼格式。不同編碼格式的壓縮率不一樣,且有各自的特點,有些在低位元速率情況 下能保持較高的畫面質量,但在高位元速率情況下反而畫面質量提示不大,有些適合在高位元速率情況下保持高清晰度畫面,但可能在低位元速率情況下效果不佳。介紹常見的幾 種。