从H.264码流中一眼读出其Profile和Level

H.264是目前业界使用最多的视频编码格式,广泛应用于直播、视频会议、在线教育和远程医疗等领域。本篇分享的文章假设你已经对H.264已经有了一些基本的了解,例如已经知道什么是SPS和PPS,知道什么是I帧、P帧和B帧,知道了NALU的抽象概念,知道了Profile和Level的概念,否则本篇文章可能暂时不适合你。

Profile和Level是H.264中一个非常重要的概念,Profile用于确定视频编码过程中帧间压缩使用的算法(例如是否包含B帧、CABAC支持、颜色空间支持等),Profile越高,就说明采用了越高级的压缩特性,对应的对编解码硬件的要求也越高;Level是对视频本身特性的一些描述(码率,分辨率,fps等),Level越高,视频的码率、分辨率、fps越高。下面两张图来自维基百科,分别对应了不同的Profiel和Level支持的能力和特性。

H264 Profile
H264 Level

对于H.264的Profile和Level比较专业化(你这么去描述,行业里的人会认为你很专业)的描述是:Profile@Level,例如Main@4.2,Baseline@3.1,High@5.0。

我们知道,H.264对于计算机来说,本质上其实就是一连串随着时间推移的比特流,至于这些比特流分别代表什么意义,制定H.264标准的那帮家伙给定义好了,大家只要都遵守这个标准就可以了。我们如何从一连串的H.264比特流里快速地读出其Profile和Level呢,这是本篇的重点。

在H.264标准中,Profile和Level信息是定义在SPS NALU中的,SPS又是H.264的第一个NALU,所以知道了SPS这个NALU中每一个字节的意义就可以很快地从中分辨出Profile和Level。

下图是H.264官方标准中对于SPS RBSP的定义。

SPS RBSP

PS:H.264的官方标准定义参考:H.264标准

根据H.264标准定义,SPS的RBSP,第1个字节和3个字节分别代表profile_idc和了level_idc信息。如果加上起始码(Annex-B格式)的3或4个字节,再加上1个字节的NALU Header,那一个H.264裸流的第6(或5)个字节就是profile_idc,第8(或7)个字节就是Level_idc,只要读出这两个字节的数值就可以快速方便地得到这个H.264流的Profile和Level。

Profile & Level byte

profile_idc字段各值代表的含义如下。

profile_idc(十进制) 含义
66 Baseline
77 Main
88 Extended
100 High (FRExt)
110 High 10 (FRExt)
122 High 4:2:2 (FRExt)
166 High 4:4:4 (FRExt)

实际使用中,Baseline,Main和High Profile比较常见,我们只需要记住几个关键的数字即可。66:Baseline,77:Main,>=100:High

level_idc字段代表的含义如下。

level_idc(十进制) 含义
10 1 (supports only QCIF format and below with 380160 samples/sec)
1 1.1 (CIF and below. 768000 samples/sec)
12 1.2 (CIF and below. 1536000 samples/sec)
13 1.3 (CIF and below. 3041280 samples/sec)
20 2 (CIF and below. 3041280 samples/sec)
21 2.1 (Supports HHR formats. Enables Interlace support. 5068800 samples/sec)
22 2.2 (Supports SD/4CIF formats. Enables Interlace support. 5184000 samples/sec)
30 3 (Supports SD/4CIF formats. Enables Interlace support. 10368000 samples/sec)
31 3.1 (Supports 720p HD format. Enables Interlace support. 27648000 samples/sec)
32 3.2 (Supports SXGA format. Enables Interlace support. 55296000 samples/sec)
40 4 (Supports 2Kx1K format. Enables Interlace support. 62914560 samples/sec)
41 4.1 (Supports 2Kx1K format. Enables Interlace support. 62914560 samples/sec)
42 4.2 (Supports 2Kx1K format. Frame coding only. 125829120 samples/sec)
50 5 (Supports 3672x1536 format. Frame coding only. 150994944 samples/sec)
51 5.1 (Supports 4096x2304 format. Frame coding only. 251658240 samples/sec)

Level很简单,level_idc的十进制数值除以10即是H.264的Level值。

结合上面三个表格即可快速计算出Profile和Level信息,下面是三个例子。

例子:码流1

SPS RBSP

Profile = 0x42 = 66 = Baseline, Level = 0x1F = 31 = 3.1; 所以该码流可以描述为Baseline@L3.1

例子:码流2

SPS RBSP

Profile = 0x4D = 77 = Main, Level = 0x28 = 40 = 4.0; 所以该码流可以描述为Main@L4.0

例子:码流3

SPS RBSP

Profile = 0x64 = 100 = High, Level = 0x28 = 40 = 4.0; 所以该码流可以描述为High@L4.0

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容