假设彼得·杰克逊(《霍比特人》)和詹姆斯·卡梅隆(《阿凡达 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 的视频有时会高达两倍大,但也有一些方法可以使其文件大小大致相同但帧速率加倍,这非常棒!