H264能力协商

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

RFC里面的表

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的。以此类推。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • [TOC] 音视频&流媒体 是什么促使我要写这一篇音视频入门文章?那是因为和一妹子打赌码率的概念,结果输了;对一个...
    AllenWu阅读 4,926评论 1 24
  • 视频编码与封装方式详解 1.编码方式和封装格式 2.视频编码标准两大系统 MPEG-1 MPEG-2 MPEG-3...
    latthias阅读 6,436评论 0 22
  • 不想
    以梦为鹿妄与栀枯_L阅读 277评论 0 0
  • 2017.04.06 姓名:代利云 公司:宁波慈星股份有限公司 宁波盛和塾《六项精进》235期学员。 【日精进打卡...
    代利云阅读 124评论 0 0
  • 常见的HTML加载方式 和当前页面进行交互的CSS Javascript书写困难 Ajax xhr.respons...
    KeKeMars阅读 8,804评论 1 4