基本上,视频大小计算如下:
Video Size per Second (bps)
=
Frame Rate (fps)
* Horizontal Pixels
* Vertical Pixels
* Bit Depth (bit)
/ Compression Ratio by Codec
当我在某处读到时,mp4视频的经验法则压缩比为50.因此,对于720p 24fps 24位彩色视频(暂时忽略音频大小),文件大小计算为:
24(fps) * 1280 * 720 * 24(bit) / 50
= 10616832 (bps) = 10.125 (Mbps)
如果您使用上述比特率计算1小时的视频大小,您将获得:
10.125(Mbps) * 3600(s) / 8(bit per Byte) / 1024(MB per GB) = 4.449GB
......这似乎根本不对。从日常经验来看,我们知道1小时720p H.264 mp4可能大约为1 GB或更低。差异几乎是5倍。
我知道这个公式不包括计算的关键帧间隔,从我读到的事情很多。我也知道这里的压缩比只是一个经验法则。可能还有一些因素我没有考虑到。问题是我不知道如何适应这些缺失的因素。
那么,还有其他方法可以更准确地估算视频大小吗?
它远比你的公式复杂得多,而且你弄清楚的要简单得多。
编解码器具有数百个参数和内部分支。没有一些静态因素说“50”。即使您想要定位特定质量,所需的比特率也会根据被压缩的内容而有所不同。例如,不移动且亮度变化很小的东西比从移动的车辆拍摄的详细动态场景带宽更少的带宽。压缩比是高度可变的。
您可以为目标比特率配置编解码器。您的视频流将接近该比特率。就这么简单。
我可以告诉H.264从1920x1080视频中定位一个恒定的比特率10 Mbps视频流,并且它会尽力将其全部塞进去。
您提到了关键帧间隔...是的,关键帧占用了视频流中的大部分带宽。因此,如果可能的话,您希望它们相距更远。您在此处的设置更多是关于选择权衡。您是否希望您的流更频繁地重新同步(例如在广播中支持快速频道更改,或在线以减少延迟),或者您是否希望从可靠的位置(例如前置)保存带宽以获得更高质量的视频 - 记录文件)。您的视频仍然符合所需的比特率,但过于频繁地插入关键帧会减少其余流的可用带宽,从而导致质量下降。如果您不确定,只需让编解码器决定在何处插入关键帧。默认设置适用于一般用途,通常比猜测您不熟悉的设置更好。