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

2023-12-23

我不明白什么是 VBV(视频缓冲验证器)以及它与 maxrate 有什么关系。
当我使用这个命令时:

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)。
为什么会发生这种情况?为什么我们需要buffsize?缓冲区大小有什么作用?


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

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

For ffmpeg the bufsize是缓冲区的大小。minrate and maxrate结合使用bufsize设置 VBR(可变比特率)的最大和最小比特率变化容限。

minrate通常与maxrate实现接近 CBR(恒定比特率)。

maxrate不是峰值比特率,而是可以进入缓冲区的最大比特率。如果您有一个很大的缓冲区(如第二个示例中所示),您可以在更长时间内容忍更高的比特率,直到缓冲区溢出。 VBV 可确保您的比特率在此之前降低。这就是为什么您的流可以达到 800-900 kbps。

你可以在这里阅读更多:--vbv-bufsize 和 --vbv-maxrate 之间的关系 http://forum.doom9.org/showthread.php?t=147460

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

H.264 中的 VBV(视频缓冲验证器)是什么? 的相关文章

  • 使用 FFMPEG 的 HLS FLAC 流

    我使用以下命令从 FLAC 文件创建了一个 HLS 流 并输出 FLAC ffmpeg i 10 brass in pocket flac map 0 a c a 0 flac f hls hls playlist type vod mas
  • JavaScript 中的 FFMPEG 命令

    是否可以使用如下命令 ffmpeg i video 1920 mp4 vf 比例 640 360 video 640 mp4 hide banner在纯 JavaScript 中降低视频的分辨率 例如 我有一个下拉菜单 其中有标签 所以我想
  • 有没有简单的方法来提取附件 b 格式的 h264 原始流?

    当我使用命令行使用 ffmpeg 提取视频流时 ffmpeg i 一些文件 vcodec copy an f rawvideo h264 什么 out h264 对于 Adob e Media Encoder 生成的某些媒体文件 只有 m4
  • 将 H.264 I 帧放入 AVSampleBufferDisplayLayer 但不显示视频图像

    在详细回顾了 WWDC2014 Session513 后 我尝试在 IOS8 0 上编写我的应用程序来解码和显示一个实时 H 264 流 首先 我成功构建了H264参数集 当我得到一个带有 4 位起始代码的帧时 就像 0x00 0x00 0
  • 我可以从带时间戳的图像创建 VFR 视频吗?

    首先 我对图像制作视频的经验几乎为零 我拥有的是一组带有 BMP 时间戳的图像 我想从中生成视频 由于时间戳的间隔不相等 我不能简单地使用从图像创建恒定帧速率视频的软件 一个可能的解决方案是在固定的时间间隔创建人造图像 但如果我无法制作 V
  • ffprobe/ffmpg 静音检测命令

    我正在研究流静音检测 它正在 ffmpeg 中执行以下命令 ffmpeg i http mystream com stream af silencedetect n 50dB d 0 5 f null 2 gt log txt 我想获得日志
  • 视频文件中的感兴趣区域

    这是我第一次在这里发帖 希望能得到积极的结果 因为我的研究已接近尾声 我想在我的代码中添加一个函数 该函数将仅处理视频文件的定义的感兴趣区域 我无法发布图片 因为我还没有声誉 但这里发布了同样的问题 gt http answers open
  • 为 iOS6.0 ARMv7 处理器构建 FFMPEG 库

    WARNING 我刚刚被另一位用户告知 在 iOS 上使用 FFMPEG 存在一些法律问题 请在此处留下链接http multinc com 2009 08 24 compatibility Between the iphone app s
  • 如何使用ijkplayer库

    我要使用 ijkplayergithub链接 https github com bbcallen ijkplayer 我下载了这个 然后通过 文件 gt 导入 gt 常规 gt 现有项目到工作区 将其导入到 eclipse 中 之后我有三个
  • YUV420p 上的大量绿色 --> iOS 上 OpenGL 2.0 着色器中的 RGB

    我想使用 ffmpeg 和 OpenGL ES 2 0 为 iOS 制作一个电影播放器 但我有一些问题 输出 RGB 图像有很多绿色 这是代码和图像 480x320 宽度和高度 512x512 纹理宽度和高度 我从 ffmpeg AVFra
  • 如何使用ffmpeg从avi生成gif? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试使用以下命令将视频的一部分提取到动画 gif 中 ffmpeg i video avi t 5 out gif 它会生成一个 g
  • 使用快速同步 h264_qsv 编码器时 ffmpeg avcodec_encode_video2 挂起

    当我使用 mpeg4 或 h264 编码器时 我能够使用 ffmpeg 3 1 0 的 API 成功编码图像以生成有效的 AVI 文件 但是 当我使用快速同步编码器 h264 qsv 时 avcodec encode video2 有时会挂
  • 如何在 PHP 中运行 ffmpeg 命令

    我需要在 PHP 中运行 ffmpeg 命令 但是 php ffmpeg 不再支持最新版本并且已经过时 我可以知道在网络文件中运行 ffmpeg 命令的替代方法吗 PHP Javascript jQuery 我尝试exec and shel
  • 使用 ffmpeg 将 h.264 avi 容器转换为 mp4

    我想使用 ffmpeg 将 h 264 avi 容器转换为 mp4 容器 我发现这个有效 ffmpeg i myfile avi vcodec copy myfile mp4 ffmpeg version N 51169 gcedf276
  • Google Cloud Platform:将上传的 MP4 文件转换为 HLS 文件

    我正在构建一个平台 允许用户将一些视频文件 20 40 秒 从手机上传到服务器 所有这些上传目前都运行良好 文件通过nodejs云功能存储在谷歌存储桶中 现在我想创建一个 gcp 转码器作业 它将上传的 mp4 视频文件转换为 hls 视频
  • 从编码视频文件中提取运动向量

    我正在尝试从编码的 mp4 文件中提取运动矢量数据 在之前的帖子中我发现 一个答案http www princeton edu jiasic cos435 motion vector c http www princeton edu jia
  • C# - 捕获 RTP 流并发送到语音识别

    我正在努力实现的目标 在 C 中捕获 RTP 流 将该流转发到 System Speech SpeechRecognitionEngine 我正在创建一个基于 Linux 的机器人 它将接受麦克风输入 将其发送给 Windows 机器 Wi
  • 如何使用android ndk r9b为Android编译FFMPEG

    我想设计一个Android应用程序 可以通过FFMPEG命令播放和编辑视频 但我不知道如何在Android上使用FFMPEG 我尝试过从Google搜索到的许多方法 但它们太旧了 无法实现 现在 FFMPEG的最新版本是2 1 1 Andr
  • 如何使用javascript将视频文件转换为字符串?

    我在 signalR 工作 我想通过将视频文件拆分为不同部分来将视频文件从一个客户端发送到另一个客户端 我已经通过分割图像源数据发送图像并在另一个客户端上接收该图像 document getElementById fileUpload ad
  • Qt WinRT 应用程序无法访问文件权限被拒绝

    我需要使用 Qt 和 FFMPEG 开发 WinRT 应用程序 我根据指令构建了 WinRT 的 ffmpeghere https github com Microsoft FFmpegInterop我可以将库与我的项目链接起来 现在我需要

随机推荐

  • 如何使用 termios.h 配置串行端口以传递原始字节?

    我需要通过 USB 虚拟串行设备与硬件进行通信 我所需要的只是使用正确的 UART 设置来快速地来回传递原始字节 我不想使用终端 使用 termios 的概念验证软件没有配置正确的位 并且除非我在运行之前通过 stty 输入一个神奇的配置字
  • 如何从一个 PHP 脚本调用另一个 PHP 脚本?

    我有一个运行时间为 34 秒的 PHP 脚本 但30秒后它就会死亡 我猜我的虚拟主机的时间限制为 30 秒 我正在考虑将脚本分为两部分 即 PHP 1 和 PHP 2 我可以从 PHP 1 调用 PHP 2 并杀死 PHP 1 吗 这两个脚
  • 使用语句和 Close 方法

    与数据库连接对象一起使用时 using 语句是否真的调用 close 方法 MSDN 文档 http msdn microsoft com en us library yh598w02 aspx说它确保调用 Dispose 方法 但没有提及
  • 如何序列化 numpy 数组?

    我是 django rest framework 的新手 所以如果我的问题太简单或没有多大意义 我很抱歉 我已经编写了一个科学的 python 包 并希望通过 API 提供它 为此 我使用 django Rest 框架 从高层次的角度来看
  • 正则表达式:没有/包含模式

    我有一个正则表达式模式来匹配 HTML 脚本标记 如何更改此脚本标记模式 以便该模式意味着 输入字符串与脚本标记模式不匹配 换句话说 给定一个模式 需要进行哪些更改才能将模式的含义更改为 与此模式不匹配 例如 如果我有一个模式 d 3 d
  • 任务管理器丢失/被杀死[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 当我尝试在独立集群中运行 flink 作业时 出现以下错误 java lang Exception TaskManager was lost
  • f1-micro VM 机器类型是永久免费的吗?

    当我尝试创建 f1 micro 包时 月费下方会显示以下消息 本月您可以免费使用 f1 micro 实例的前 720 小时 现在是11月 还有30天 720除以30就是24小时 看来f1 micro 套餐是整个月免费的 我尝试在网上查找一些
  • PowerShell:使用 Invoke-Command 执行命令时出错?

    我试图在远程服务器上执行以下语句 Invoke Command ComputerName server1 ScriptBlock Get Process 但我收到一条错误消息 server1 Connecting to remote ser
  • GitLab 页面可以用于审查 mkdocs 项目上的应用程序吗?

    这个答案 https stackoverflow com a 58402821 342327 by joki https stackoverflow com users 4618482 joki to a 上一个问题 https stack
  • C 语言 Fizzbuzz 程序

    好吧 这确实不是一个杂乱的问题 而是一个 C 问题 我用 C 编写了一些简单的代码 用于根据需要打印出 fizzbuzz include
  • 使用引导卡作为超链接

    我有一张引导卡 用作链接 试图用它来包裹它 a 更改卡片的所有样式 div class card style width 15rem display inline block img class card img top src https
  • 模糊文本搜索:正则表达式通配符搜索生成器?

    我想知道是否有某种方法可以在 PHP 中进行模糊字符串匹配 在长字符串中查找单词 即使拼写错误也能找到潜在的匹配项 如果由于 OCR 错误而偏离一个字符 它会找到它 我在想正则表达式生成器也许能够做到这一点 因此 如果输入 crazy 它将
  • 加密/解密的单元测试

    我已经实现了一个非常简单的类 名为Enigma它有一个对称密钥和两种方法 byte encryptString String strToEncrypt and String decryptBytes byte arrayToDecrypt
  • c++: 函数 arg char** 与 char*[] 不同

    我正在使用 g 我正在使用具有main int char 重命名以便我可以调用它 我在看我应该在 C 中使用 char argv 还是 char argv https stackoverflow com questions 779910 s
  • 温莎城堡将命名组件映射到特定属性

    以下场景 我们使用 Fluent API 来注册程序集中的所有组件以及具有命名键的两个组件 typeof A 另一个具有两个属性 typeof A 的类 B 应该获得注入的命名组件 Sample public class A IA publ
  • MYSQL 在存储过程中参数化 IN 子句变量值的最佳方法

    我必须编写一个存储过程 我想使用 IN 运算符为名为 colorId 的变量设置值 该参数可以是整数 id 列表或没有 id 我想知道存储过程中变量的类型应该是什么 其中 color id IN 1 2 3 4 谢谢您的帮助 如果你发送一个
  • preg_split() 的正则表达式换行[重复]

    这个问题在这里已经有答案了 这是我的文件 0 0 5 0 5 0 6 0 7 0 2 0 5 0 2 0 1 0 5 0 5 0 1 0 2 0 7 1 5 0 5 0 0 0 5 0 5 0 5 0 2 0 5 0 1 0 5 0 6 0
  • CSS 网格中每行的列数可以不同吗?

    grid display grid grid template columns repeat 3 1fr grid template rows 100px grid auto rows 60px grid gap 15px col back
  • D3 从最右边的字符开始在轴左侧对齐文本

    所以我有一个 D3 条形图 如下所示 条形图 https i stack imgur com f3UWR png 当较小的数据条与轴的右侧重叠时 就会出现问题 我想沿着图轴的左侧对齐数据文本 如较大的数字所示 无论条形有多小 var dat
  • H.264 中的 VBV(视频缓冲验证器)是什么?

    我不明白什么是 VBV 视频缓冲验证器 以及它与 maxrate 有什么关系 当我使用这个命令时 ffmpeg i input mp4 crf 21 maxrate 750k bufsize 750k codec v 0 libx264 s