我不能理解什么是VBV (视频缓冲验证器),以及它与最大速率有什么关系。
当我使用这个命令时:
ffmpeg -i input.mp4 -crf 21 -maxrate 750k -bufsize 750k -codec:v:0 libx264 -s 640x360 -r 30 output.mp4output.mp4视频具有大约730kb/s比特率
但当我使用此命令时(相同的命令,但使用-bufsize 5000k):
ffmpeg -i input.mp4 -crf 21 -maxrate 750k -bufsize 5000k -codec:v:0 libx264 -s 640x360 -r 30 output.mp4output.mp4视频的比特率大于750kb/s (大约800-900kb/s)。
为什么会发生这种情况?为什么我们需要bufsize?bufsize做什么?
发布于 2015-11-09 23:36:33
基本上,VBV使您能够确保编码的流不会使解码器的缓冲区溢出或下溢。如果过多的数据快速进入,缓冲区将溢出,您将被迫删除其中的一些数据。如果数据传入的速度太慢,缓冲区将耗尽,播放将停止。
这有点违反直觉,但VBV underflow发出编码速率缓冲区溢出(视频比特率大于输入速率)的信号,而VBV overflow发出编码速率缓冲区溢出(视频比特率低于输入速率)的信号。
对于ffmpeg,bufsize是缓冲区的大小。minrate和maxrate与bufsize结合使用,以设置可变比特率的最大和最小比特率更改容限。
minrate通常与maxrate一起使用,以实现接近CBR(恒定比特率)。
maxrate不是峰值比特率,而是可以进入缓冲区的最大比特率。如果你有一个大的缓冲区,就像你的第二个例子,你可以在更长的时间内容忍更高的比特率,直到缓冲区溢出。VBV确保你的比特率在这种情况发生之前被降低。这就是为什么你的数据流可以达到800-900kbps。
你可以在这里阅读更多内容:The relationship between --vbv-bufsize and --vbv-maxrate
https://stackoverflow.com/questions/33611900
复制相似问题