1. 程式人生 > >視訊位元速率(Bitrate), 幀率(FPS)和解析度的聯絡與區別

視訊位元速率(Bitrate), 幀率(FPS)和解析度的聯絡與區別

視訊位元速率,幀率和解析度到底哪一個影響電影的清晰度

位元速率:影響體積,與體積成正比:位元速率越大,體積越大;位元速率越小,體積越小。

位元速率就是資料傳輸時單位時間傳送的資料位數,一般我們用的單位是kbps即千位每秒。也就是取樣率(並不等同與取樣率,取樣率的單位是Hz,表示每秒取樣的次數),單位時間內取樣率越大,精度就越高,處理出來的檔案就越接近原始檔案,但是檔案體積與取樣率是成正比的,所以幾乎所有的編碼格式重視的都是如何用最低的位元速率達到最少的失真,圍繞這個核心衍生出來cbr(固定位元速率)與vbr(可變位元速率), “位元速率”就是失真度,位元速率越高越清晰,反之則畫面粗糙而多馬賽克。

下面是通過一個wav檔案的取樣率來計算位元速率和檔案大小,通過MediaInfo工具顯示的檔案資訊如下:

概要

完整名稱                             :audio\wav\adele-rolling_in_the_deep.wav

檔案格式                             : Wave

檔案大小                             : 38.3 MiB

長度                                    : 3分 47秒

平均混合位元速率                     : 1 411 Kbps

音訊

ID                                         : 0

檔案格式                             : PCM

格式設定,Endianness      : Little

編碼設定ID                          : 1

編碼設定ID/提示資訊         : Microsoft

長度                                      : 3分 47秒

位元速率                                      : 1 411.2 Kbps

聲道                                     : 2聲道

取樣率                                 : 44.1 KHz

位深度                                 : 16位

大小                                     : 38.3 MiB (100%)

1.位元速率計算公式:

位元速率=取樣率 x 位深度 x 聲道

所以,上面檔案的位元速率= 44.1Khz x 16位 x 2聲道 = 1411.2 Kbps

2.檔案大小 = 位元速率 x 時長 = 1411.2 Kbps x (3 x 60 + 47 )s = 1411.2Kbps x 227s

 =38102.4 Kb

38102.4 Kb / 1024 Kb/M = 37.2M

近似等於mediainfo工具顯示的檔案大小38.3M。

注:此計算公式對未壓縮的wav格式檔案有效,不適用於mp3等被壓縮的檔案。

幀率:影響畫面流暢度,與畫面流暢度成正比:幀率越大,畫面越流暢;幀率越小,畫面越有跳動感。如果位元速率為變數,則幀率也會影響體積,幀率越高,每秒鐘經過的畫面越多,需要的位元速率也越高,體積也越大。

幀率就是在1秒鐘時間裡傳輸的圖片的幀數,也可以理解為圖形處理器每秒鐘能夠重新整理幾次,

解析度:影響影象大小,與影象大小成正比:解析度越高,影象越大;解析度越低,影象越小。

清晰度

在位元速率一定的情況下,解析度與清晰度成反比關係:解析度越高,影象越不清晰,解析度越低,影象越清晰。
在解析度一定的情況下,位元速率與清晰度成正比關係,位元速率越高,影象越清晰;位元速率越低,影象越不清晰。

頻寬、幀率

例如在ADSL線路上傳輸影象,上行頻寬只有512Kbps,但要傳輸4路CIF解析度的影象。按照常規,CIF解析度建議位元速率是512Kbps,那麼照此計算就只能傳一路,降低位元速率勢必會影響影象質量。那麼為了確保影象質量,就必須降低幀率,這樣一來,即便降低位元速率也不會影響影象質量,但在影象的連貫性上會有影響。

avi幀率 dwScale,dwRate

轉自:http://yixiangongzhu.blog.163.com/blog/static/19736320320111123111753465/

msdn上說dwRate/dwScale才是播放速率。   
  視訊中每秒播放的幀數可能不是整數,比如可能是29.97等,   
  注意到在AVISTREAMINFO結構中,所以屬性都是整型變量表示的,所以小數只能   
  用兩個整數相除得到,這樣就需要用兩個整數(dwRate和dwScale)來得到播放速率。   
  比如速率是29.97,那麼可以用dwRate=2997,dwScale=100得到   
  如果速率是29.9,那麼可以用dwRate=299,dwScale=10得到

在avi檔案中包含有AviMainHeader,AviStreamHeader等頭部資訊,其中有以下幾個欄位:Start、Length、Scale、Rate,有資料中介紹:

In AviMainHeader:

The dwStart and dwLength fields specify the starting time of the AVI file and the length of the file. The units are defined bydwRate and dwScale. The dwStart field is usually set to zero.

The dwScale and dwRate fields are used to specify the general time scale that the file will use. In addition to this time scale, each stream can have its own time scale. The time scale in samples per second is determined by dividing dwRate bydwScale.

In AviStreamHeader:

dwScale is used together with dwRate to specify the time scale that this stream will use.

Dividing dwRate by dwScale gives the number of samples per second.

For video streams, this rate should be the frame rate.

For audio streams, this rate should correspond to the time needed fornBlockAlign bytes of audio, which for PCM audio simply reduces to the sample rate.

為了理解,我們拿一個實際的avi檔案來分析一下:

1.Video AviStreamHeader:Length=4500、Scale=1、Rate=25,因此此檔案視訊幀率為25/1=25,可得:視訊時長:4500/25=180秒。這幾個數字容易理解。

2.Audio AviStreamHeader:Length=2812、Scale=16000、Rate=2,初看一頭霧水,反覆讀資料、仔細分析才明白:對於PCM audio,nBlockAlign與dwSampleSize相等,為2,及每個音訊取樣為兩個位元組,每個音訊幀的大小為1024B,而dwRate/dwScale即為取樣率:16000/2=8000,因此,音訊時長:

(2812 * 1024 / 2) / (16000 / 2) = 179.968秒。

http://blog.csdn.net/ameyume/article/details/7308504