视频编码:视频文件大小会随着 fps 的增加而增加多少?

视频编码:视频文件大小会随着 fps 的增加而增加多少?

假设彼得·杰克逊(《霍比特人》)和詹姆斯·卡梅隆(《阿凡达 2》)的下一部大片将以48 帧/秒(甚至更多) - 即超过通常的 24 fps - 我想知道:编码视频的文件大小会随着 fps 的增加而增加多少

随着 fps 的增加帧与帧之间的差异变得越来越小。所以我假设文件大小的增长速度不是线性的。这是真的吗?有什么经验法则吗?或者是否有人有以 24、48、60 和 96 fps 编码的相同视频的示例文件大小(使用现代视频编解码器)?

(附带问题:当图像尺寸超过全高清时,视频文件大小会增加多少 - 例如从全高清到 4k?)

答案1

影响文件大小的唯一因素是比特率。你可以设置 1fps 或 120fps,如果你的比特率为 1000Mbs,文件大小将完全相同。根据定义,比特率决定文件大小。请随意测试 - 拍摄一段视频并以 10 个不同的尺寸和 10 个不同的 fps 输出,你最终会得到相同(或差异可忽略)的文件大小。

这是一种简化,但是,如果您想讨论文件大小与质量,那么这是一个完全不同的讨论。

答案2

我将尝试理论方法。我很想看到一些现实世界的例子来证明或反驳我的理论。好问题!如果您有任何意见或发现一些缺陷,请随时发表评论。


对于任何当前编码器(以 MPEG-4/AVC/h.264 为例),帧速率并不像您想象的那么重要。我们假设没有速率控制,并且每张图片都使用相同的基本 QP(量化参数)进行编码。


你说得对:运动差异(定义在国际电联无线电通信部门P.910,值得一读)两帧之间48 fps 视频的帧速率将低于 24 fps 的相同视频。这是因为帧之间的差异不会太大。请注意,整个时间运动不会增加。最后,一个物体从 A 点移动到 B 点,因此无论每秒有多少帧,其运动矢量的长度都将相同。

由于编码器寻找两个(或更多)帧之间的差异并仅对残差值进行编码,这意味着它必须对每张图片编码更少的残差。平均而言,这将是残差的一半。所以你说得对。(我们不能忘记,只有一半的残差并不意味着存储它所需的数据只有一半。这取决于实施的算法编码。)

再说了,每秒的图片数量是原来的两倍,这意味着——平均而言——编码的信息再次翻倍。

总而言之,这方面没有太大变化。编码器将尽最大努力对视频中的所有运动进行编码,总的来说是一样的(只是步长更小,如果你明白我的意思)。我们唯一需要增加的开销是无法以有效方式进行算术编码的小残差的开销。


以上仅适用于 B 或 P 图片,它们依赖于其他图片。但是,我们必须插入一个帧内编码每隔一段时间就会出现一张图片,并且不依赖于任何其他图片。如果这种帧内编码图片的速率不增加,我们可以假设线性增长文件大小可能稍微大一些。

然而,如果你为了补偿可能的数据包丢失或比特流错误而减少帧内编码图片的距离,你将承担更多的开销,因此增加的不仅仅是线性的,不多,但可能引人注目。

答案3

这实际上取决于编码类型。如果您以 RAW 格式捕获视频,那么是的:更多图像以线性方式需要更多存储空间。

如果您将捕获的图像直接编码为某种压缩格式,那么一切都取决于该编解码器的工作方式。

至于文件大小,则由 决定bitrate × duration。因此帧速率不直接相关。为了实现相同的质量就像以较低帧速率编码的相同视频一样,您可能需要稍微提高比特率。提高多少 - 再次 - 取决于您使用的编解码器。

答案4

今天也问了自己这个问题。在我的手机和相机上,60fps 视频的大小几乎是 30fps 视频的两倍,可能是因为它们没有太多的处理能力可用于智能压缩,因此只是将其帧速率翻倍以保持安全。

不过,离线压缩可以产生更好的效果。例如,您可以查看 YouTube 的 60fps 视频,特别是不同质量设置下实际视频文件的大小。像这样的工具youtube-dl可以让您做到这一点。以下是该工具对随机 60fps Youtube 视频的输出:

C:\>youtube-dl -F https://www.youtube.com/watch?v=H53QmxZ-rOs
[youtube] H53QmxZ-rOs: Downloading webpage
[youtube] H53QmxZ-rOs: Downloading video info webpage
[info] Available formats for H53QmxZ-rOs:
format code  extension  resolution note
249          webm       audio only tiny   62k , opus @ 50k (48000Hz), 3.23MiB
250          webm       audio only tiny   82k , opus @ 70k (48000Hz), 4.41MiB
140          m4a        audio only tiny  130k , m4a_dash container, mp4a.40.2@128k (44100Hz), 8.18MiB
251          webm       audio only tiny  158k , opus @160k (48000Hz), 8.41MiB
278          webm       256x144    144p   97k , webm container, vp9, 30fps, video only, 5.11MiB
160          mp4        256x144    144p  113k , avc1.4d400c, 30fps, video only, 3.69MiB
242          webm       426x240    240p  228k , vp9, 30fps, video only, 8.69MiB
133          mp4        426x240    240p  281k , avc1.4d4015, 30fps, video only, 7.95MiB
243          webm       640x360    360p  509k , vp9, 30fps, video only, 15.81MiB
134          mp4        640x360    360p  582k , avc1.4d401e, 30fps, video only, 14.79MiB
244          webm       854x480    480p  771k , vp9, 30fps, video only, 26.80MiB
135          mp4        854x480    480p  992k , avc1.4d401f, 30fps, video only, 20.65MiB
247          webm       1280x720   720p 1555k , vp9, 30fps, video only, 52.89MiB
302          webm       1280x720   720p60 2853k , vp9, 60fps, video only, 79.52MiB
248          webm       1920x1080  1080p 2944k , vp9, 30fps, video only, 94.03MiB
298          mp4        1280x720   720p60 3094k , avc1.4d4020, 60fps, video only, 38.61MiB
303          webm       1920x1080  1080p60 4898k , vp9, 60fps, video only, 142.73MiB
136          mp4        1280x720   720p 4910k , avc1.4d401f, 30fps, video only, 62.89MiB
299          mp4        1920x1080  1080p60 5785k , avc1.64002a, 60fps, video only, 123.69MiB
137          mp4        1920x1080  1080p 6930k , avc1.640028, 30fps, video only, 111.05MiB
43           webm       640x360    360p , vp8.0, vorbis@128k, 43.91MiB
18           mp4        640x360    360p  501k , avc1.42001E, mp4a.40.2@ 96k (44100Hz), 31.66MiB
22           mp4        1280x720   720p 1125k , avc1.64001F, mp4a.40.2@192k (44100Hz) (best)

对于此视频,使用 av1 压缩时,60fps FHD 视频仅比 30fps FHD 视频大 10%。但使用 vp9 压缩时,文件大小差异高达 60%!

因此我想您可以预期 60fps 的视频有时会高达两倍大,但也有一些方法可以使其文件大小大致相同但帧速率加倍,这非常棒!

相关内容