2015-11-09 136 views
2

我不明白什麼是VBV(視頻緩衝驗證器)以及它與maxrate有什麼關係。
當我使用這個命令:什麼是H.264中的VBV(視頻緩衝驗證器)?

ffmpeg -i input.mp4 -crf 21 -maxrate 750k -bufsize 750k -codec:v:0 libx264 -s 640x360 -r 30 output.mp4 

output.mp4視頻有一個比特率約730 kb/s的
但是,當我使用這個命令(同樣的命令,而是-bufsize 5000K):

ffmpeg -i input.mp4 -crf 21 -maxrate 750k -bufsize 5000k -codec:v:0 libx264 -s 640x360 -r 30 output.mp4 

output.mp4視頻的比特率高於750kb/s(約800-900 kb/s)。
爲什麼會發生?爲什麼我們需要bufsize? bufsize做什麼?

+0

http://video.stackexchange.com/也可以幫助像這樣 – aergistal

+0

未來的問題,謝謝你的幫助,aergistal! – Alexandr

回答

6

基本上,VBV使您可以確保編碼流不會溢出或下溢解碼器的緩衝區。如果太多的數據快速進入緩衝區將溢出,你將被迫放棄一些數據。如果數據進入速度太慢,緩衝區將耗盡,播放將停止。

這有點違反直覺,但同時VBV溢出信號的編碼器的速率緩衝器下溢(視頻比特率VBV的下溢信號的編碼器的速率緩衝器溢出(視頻比特率低於輸入速率更大)低於輸入的速率)。

對於ffmpegbufsize是緩衝區的大小。 minratemaxratebufsize一起使用來設置VBR(可變比特率)的最大和最小比特率更改容差。

minrate通常與maxrate一起使用以實現接近CBR(恆定比特率)。

maxrate不是峯值比特率,而是可以進入緩衝區的最大比特率。如果您的緩衝區較大(如第二個示例中所示),則可以在較長的時間內容忍較高的比特率,直到緩衝區溢出。 VBV確保您的比特率在發生之前降低。這就是爲什麼您的流可以達到800-900 kbps。

你可以在這裏閱讀更多:The relationship between --vbv-bufsize and --vbv-maxrate