1、能力计算
H264能力计算
这是一个最常见的H264能力,通过抓包我们发现,H264主要包含了Profile、Level、CustomMaxMBPS、CustomMaxFs、MaxStaticMBPS这5个参数,还有其他很多的参数比如CustomMaxDPB、CustomMaxBRandCPB等等。其中就前面5个是主要的参数,我们公司也只支持前5个参数,前5个参数中又只有Profile、Level是必须的参数,后面三个是可选的参数。H264不同于其他视频的能力,它没有明确表示分辨率和帧率的大小,它通过Level来表示支持到什么分辨率和帧率的组合,这里强调了下分辨率和帧率的组合,这是因为一个Level它对应了好多种分辨率和帧率的组合。比如讲Level 4(85),支持1080P
30Fps、UXGA 32Fps,SXGA 47Fps、720P 68Fps、
XGA 79Fps、4CIF 151Fps等等。下面详细解释。
Profile:
Baseline Profile支持I/P帧,只支持无交错(Progressive)和CAVLC;
Extended Profile支持I/P/B/SP/SI帧,只支持无交错(Progressive)和CAVLC;
Main Profile提供I/P/B帧,支持无交错(Progressive)和交错(Interlaced),同样提供对于CAVLC和CABAC的支持;
High Profile在主要Profile的基础上增加了8x8内部预测、自定义量化、无损视频编码和更多的YUV格式;
我们公司现在现在支持的有Baseline、HighProfile。
这个Profile值在抓包中就是Item0的值;
Level:
Level值在抓包中的Item 1的值,1.2就是这个H264的能力。从这张表中我们发现这个Level的支持的MaxMBPS是6000,MaxFs是396,其他的参数我们没有用到。这时候我们可以确定这个H264所支持的分辨率和帧率的组合了。但是如果还有CustomMaxMBPS、CustomMaxFs这些可选值,这些值指示了这个H264能力可以更大。
CustomMaxMBPS:
这个值是可选参数,指示了这个H264能支持更高的MaxMBPS。比如这个抓包里面Item 2的值是20,这时候20*500就是这个能力的MaxMBPS= 10000比原来的6000大。
CustomMaxFs:
这个值也是个可选参数,指示了这个H264能力支持更高的MaxFs。比如这个抓包里面Item 3的值是2,那么2*256就是这个能力的MaxFs =512比原来的396大。
通过上面的参数求分辨率和帧率的组合:
这时候所有的参数的值都知道了,我们就可以根据这些值来求出分辨率和帧率的大小了。比如这个能力是MaxMBPS = 10000,MaxFs = 512,MaxFs就是最大支持分辨率的大小。
上图是个分辨率的图。用这个分辨率来判断这个H264能力到底支持到什么分辨率。比如我们去个CIF分辨率352*288 = 101376然后101376/256 = 396 < 512那么这个能力是支持CIF的,并可以通过不断尝试,只要那个值小于512就是支持的分辨率,比如我们这里就取CIF能力,然后求帧率MaxMBPS/396 = 10000/396 =25Fps,所以这个能力是支持CIF25Fps的。以此类推。