可变帧速率(或 VFR)是视频压缩的一个术语,指某些容器格式支持的功能,该功能允许帧速率在视频播放期间主动改变,或者完全放弃帧速率的概念并为每一帧设置单独的时间码。
所以我理解这个概念。但这会引发无数问题,而且大多数信息板都是废话:
所有小数 fps 都是 vfr 吗?整数 fps 可以是 vfr 吗?或者它特定于视频的制作方式,例如当您使用 OBS 录制屏幕并将 fps 设置为 30 时,但得到的是小数 29.777?vfr 真的只存在于现实生活中录制的视频中,但 3d/2d 动画不会有 vfr 吗?我看不出小数与定义有什么关系,任何整数值都可以满足它。我知道您可以在 ffmpeg 中使用 -vfrdet 来判断某些东西是否是 vfr...但如果所有 vfr 都是小数,那么有什么意义呢,为什么不直接检查 fps 呢。
如果您以相同的 fps 重新编码 vfr 视频,输出是否仍会保持相同的速度和帧数,或者是否会出现某种不同于恒定 fps 的数据丢失(编解码器质量损失之外)?播放 vfr 视频是否会显示所有帧,还是会跳过帧(假设硬件运行正常)?
为什么视频编辑器并非“全部”都支持非整数 fps 值?我的意思是,任何我能用整数分数表示的东西都应该可以作为 fps 输入设置……否则就违背了“视频编辑”的意义。这些所谓功能齐全的视频编辑器将您限制为仅 5 个预设 fps(即 30/60/24/23.97/25)的理由究竟是什么。我更困惑的是,虽然有些视频编辑器声称它们支持 60fps,但只支持 60fps 时间线编辑……并且输出的支持 fps 值(甚至在您导出之前!)列为 59.94,而我看到官方教程视频告诉我和所有人 59.94 与 60 相同。我不确定这是否与 vfr 有关,还是其他什么。
vfr 的 fps 值是否只是整个视频的平均 fps?还是某种更高级的平均/计算方法?在 vfr 视频中列出单个“平均”fps 的作用是什么?定义指出视频与任何一个 fps 无关...是否有某种特殊的数据包告诉视频播放器以某种方式播放视频,以便某些部分以所需的方式更快/更慢?从技术上讲,vfr 难道不能意味着视频的开头以 60 fps 播放,而最后 10 秒以 5 fps 播放?如果只有一个数字,视频播放器如何知道以 60 fps 播放开头...并以 5fps 播放结尾...。
答案1
Are all decimal fps vfr; can integer fps be vfr?
不,每秒帧数的小数部分仍然可以是常数。例如,NTSC(美国电视标准)的恒定帧速率为每秒 29.97 帧(通常表示为 30000/1001)。
Does vfr really only exist on real-life recorded video, but 3d/2d animation wouldn't have vfr?
内容无关紧要。动画往往是在考虑特定帧速率的情况下创建的。但没有理由必须如此。
I don't see what being a decimal has to do with the definition
没有什么。
why not just check the fps instead.
“检查 fps” 是什么意思(见第 4 点)
If you re-encode vfr video at the same fps,
这完全取决于你如何编码以及你使用的编码工具如何工作。大多数工具都会将输入的内容直接传输到输出,而不会修改帧速率(除非你告诉它这样做)
Does playback of a vfr video show ALL the frames or does it tend to skip frames
取决于设备。例如,如果您的电视是 60Hz 并且您编码了 61 fps,它就无法显示每一帧,但如果内容平均为 60Fps,但突然达到 62,电视可能会均匀分布帧并显示所有帧,或者可能会丢弃两帧,然后重复两帧。每个显示器都不同,没有规则规定它应该做什么。
Why do video editors not 'all' support non-integer fps values?
您需要询问这些工具的创建者。除了懒惰、成本或简单性之外,没有其他原因会阻止任何工具提供此类功能。
简单来说,在很多情况下,用户要求的帧速率根本无法实现。例如,RTMP 使用 1khz 时钟,这意味着甚至 30fps CFR 都不可能实现(30 不能整除 1000,它变成 30 fps AFR,其中三分之二的帧长为 33ms,三分之一的帧长为 34ms),如果 UI 的比例是用户可以输入他们想要的帧速率的任何值,那么由于他们选择的视频格式的限制,他们通常会得到意想不到的结果。
telling me and everyone that 59.94 is the same as 60
这绝对不是一回事。在大多数情况下,这并不重要,对于互联网视频来说,这永远不会重要,但对于一些广播电视工作流程,帧速率通常必须准确,以便不同的设备协同工作。
Is the fps value of a vfr just the average fps across the entire video?
关于如何计算平均帧速率,没有标准。软件可能只是从标题中读取一个值,它可能计算前几秒的平均值,也可能计算整个文件的帧速率。每个工具的工作原理都不同。
What is even the role of having a singular listed 'average' fps in a vfr video?
纵容。
is there some kind of special data packet that tells the video player to playback the video in a certain way such that some parts are faster/slower in the desired fashion?
不,每一帧都有与之关联的时间戳。播放器只会显示一帧,直到显示下一帧为止。它会在每一帧上加速和减速。
Can't vfr technically mean the start of a video plays at 60 fps and the last 10 seconds play at 5 fps?
是的
How would a video player know to play the start at 60 fps...and the end at 5fps...if it only has 1 number to go off of.
它没有 1 个数字可以作为依据。它每帧都有一个数字。