视频比特率和文件大小计算

16

各位,

我正在尝试理解视频比特率、图像大小、编解码器和文件大小之间的关系。例如,如果我有一部电影,它的图像尺寸为1920*1080像素,比特率为24 MBPS,时长为2小时,使用的编解码器是H.264,那么如何近似计算文件大小?

我们现在可以忽略音频。

感谢任何指点。

此致敬礼,
Peter

4个回答

23

您已经拥有比特率和视频长度,所以只需将它们相乘即可:

24 MBPS * 2小时 * 60分钟/小时 * 60秒/分钟 = 172,800 MB

如果在您的情况下MB是“兆比特”而不是“兆字节”,则需要除以8,得到21,600兆字节或约21.6 GB。


谢谢你的帮助。那确实是我的初步计算,但我没有理解编解码器如何适用于这个方程式。我想像H.264这样的编码器在压缩方面比其他编码器更好。我听说MJPEG2000在压缩方面甚至更好。另一件我不明白的事情是电影的初始大小如何影响。我想象1920x1080的尺寸会比720p占用更多的空间。 - Peter
那将取决于您如何告诉压缩器完成其工作,以及视频的内容。如果您告诉压缩器在720p镜头中使用24 MBPS,您最终会得到相同大小的文件。如果您的帧尺寸更小,通常可以将24 MBPS降低到相应较小的值,并获得相同的质量水平。由于1920x1080大约是1280x720面积的两倍,因此您可以将720p镜头压缩至12 MBPS左右,从而获得大致相同的质量。 - user1118321
顺便说一下,如果这个答案有用,请在左边勾选绿色的复选标记! - user1118321

4

我用了另一种方法。我找到了计算每张图片的比特率以始终为2小时电影获得最佳结果的方法。

每秒帧数 - 30

分辨率宽度 - 1920

分辨率高度 - 1080

Gop大小 - 12

Gop大小所对应的每秒帧数 (30/12=2.5)

每帧像素数 (1920*1080=2,073,600)

每秒像素数 (2,073,600*30=62,208,000)

最大需要的比特率 (62,208,000/2.5=24,883,200) -24000 - 24Mb/s

70%损失的比特率 (24,883,200/0.7=17,418,240) - 17000 - 17Mb/s 对于720i,70%的损失将给出一个文件大小为10Gb

40%损失将给出4Gb, 对于分辨率为720-480,长宽比为3/4的屏幕,70%的损失将给出3.7Gb的大小,40%的损失将给出1.4Gb的大小


1
阅读此文,我认为“损失70%”是不正确的。实际上应该是相反的,即30%的损失。在您的示例中,更高的损失会导致更小的文件大小,这是不可能的。 - Zettt
这似乎不对。例如,如果 GOP 大小为2(每隔2个帧是关键帧),那么它将是30/2=15。并且它实际上会产生比 GOP 大小为12 更少的比特率。我有什么遗漏吗? - Eugene Alexeev

1

对于音频文件:文件大小(位)= 位深度(b)* 采样率(hz)* 声道数 * 时间(秒)

对于视频文件:文件大小(位)= 每秒帧数(fps)* 每帧像素数(=宽度*高度)* 位深度(b)* 时间(秒)


1

以下是两个流行的在线服务,根据视频尺寸和FPS来计算推荐的比特率

https://streamfrogs.com/bitrate-calculator(适用于twitch)

https://bitratecalc.com

凭借猜测和祝福,他们正在使用的公式是:
(width x height) / 1000 * fps * bits per pixel

其中每像素位数(BPP)是以下值之一(或在0.06和0.16范围内的任何值)
0.06 (lowest quality allowed by twitch)
0.08 (the bitratecalc "low" quality approximately)
0.1 (recommended by twitch - the sweet spot)
0.15 (the bitratecalc "high" quality exactly)
0.16 (highest quality allowed by twitch)

这里存在一个权衡。如果BPP太低,质量会很差。如果BPP太高,会出现过多的缓冲。我不知道如何解决这个问题。
基于:https://developer.apple.com/documentation/http_live_streaming/hls_authoring_specification_for_apple_devices#2969491 根据应用这个公式,似乎苹果使用了约0.1(低)和0.13(高)的BPP。
请注意,Twitch建议比特率不应超过6000kbps,尽管在某些情况下允许8500kbps。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接