Video 如何正确估计mp4 H.264视频大小?

Video 如何正确估计mp4 H.264视频大小?,video,video-streaming,size,mp4,h.264,Video,Video Streaming,Size,Mp4,H.264,基本上,计算视频大小: 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

基本上,计算视频大小:

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可能在1GB左右或更低。差异几乎是5的一个因素

我知道这个公式不包括关键帧间隔的计算,我读了很多书。我也知道这里的压缩比只是一个经验法则。可能还有一些我没有考虑的因素。问题是我不知道如何适应这些缺失的因素


那么,还有其他方法可以更准确地估计视频大小吗?

它比你的公式复杂得多,也更简单

编解码器有数百个参数和内部分支。没有什么静态因素,比如说“50”。即使您希望以特定的质量为目标,所需的比特率也会根据所压缩的内容发生很大的变化。例如,与从移动车辆拍摄的详细动态场景相比,不移动且亮度变化不大的物体所占用的带宽要小得多。压缩比变化很大

您可以为目标比特率配置编解码器。然后,您的视频流将接近该比特率。就这么简单

我可以告诉H.264以1920x1080视频中的恒定比特率10 Mbps视频流为目标,它会尽最大努力将其全部塞入其中


你提到了关键帧间隔。。。是的,关键帧占用视频流中的大部分带宽。因此,在可能的情况下,您希望它们合理地分开。您在这里的设置更多地是关于选择折衷。您希望流更定期地重新同步(例如在广播中以支持快速频道更改,或在线以减少延迟),还是希望将带宽保存在可靠的位置(例如预录制的文件)以获得更高质量的视频。您的视频仍将符合所需的比特率,但过频繁地插入关键帧将减少流其余部分的可用带宽,从而导致质量降低。如果不确定,请让编解码器决定在何处插入关键帧。默认值适用于一般用途,通常比猜测您不熟悉的设置要好。

您心目中的50常数并不存在,它是编码器的比特率设置,执行编码的用户/程序可以从通常非常宽的范围内选择他想要的任何比特率。较低的比特率将导致更多的压缩伪影和较低的质量。MP4只是一种容器格式,不定义视频编解码器,也不定义视频和音频编解码器的比特率。请看youtube的比特率指南,了解一些细节:我知道有太多的变量,你无法准确地计算出一个该死的东西。我想要的是一种粗略估计视频大小的方法。系数5只是粗略的估计。该设置来自任何编码视频的软件。您可以对其进行编码1920x1080@30fps视频速度从2到50 Mbps不等。2Mbps看起来很可怕,但它是有效的。如果您正在寻找上限,那么youtube链接提供了一个很好的估计值。如果您要从特定的相机或手机型号获取视频,则需要检查硬件文档或支持论坛,或者仅使用打印比特率的解码器测试生成的文件。