首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >H.264中的VBV (视频缓冲校验)是什么?

H.264中的VBV (视频缓冲校验)是什么?
EN

Stack Overflow用户
提问于 2015-11-09 22:57:59
回答 1查看 24.3K关注 0票数 10

我不能理解什么是VBV (视频缓冲验证器),以及它与最大速率有什么关系。

当我使用这个命令时:

代码语言:javascript
运行
复制
ffmpeg -i input.mp4 -crf 21 -maxrate 750k -bufsize 750k -codec:v:0 libx264 -s 640x360 -r 30 output.mp4

output.mp4视频具有大约730kb/s比特率

但当我使用此命令时(相同的命令,但使用-bufsize 5000k):

代码语言:javascript
运行
复制
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-900kb/s)。

为什么会发生这种情况?为什么我们需要bufsize?bufsize做什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-09 23:36:33

基本上,VBV使您能够确保编码的流不会使解码器的缓冲区溢出或下溢。如果过多的数据快速进入,缓冲区将溢出,您将被迫删除其中的一些数据。如果数据传入的速度太慢,缓冲区将耗尽,播放将停止。

这有点违反直觉,但VBV underflow发出编码速率缓冲区溢出(视频比特率大于输入速率)的信号,而VBV overflow发出编码速率缓冲区溢出(视频比特率低于输入速率)的信号。

对于ffmpegbufsize是缓冲区的大小。minratemaxratebufsize结合使用,以设置可变比特率的最大和最小比特率更改容限。

minrate通常与maxrate一起使用,以实现接近CBR(恒定比特率)。

maxrate不是峰值比特率,而是可以进入缓冲区的最大比特率。如果你有一个大的缓冲区,就像你的第二个例子,你可以在更长的时间内容忍更高的比特率,直到缓冲区溢出。VBV确保你的比特率在这种情况发生之前被降低。这就是为什么你的数据流可以达到800-900kbps。

你可以在这里阅读更多内容:The relationship between --vbv-bufsize and --vbv-maxrate

票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33611900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档