h264解码之自定义信息(SEI)
原文链接 :https://blog.csdn.net/y601500359/article/details/80943990
SunkingYang 2018-07-06 17:57:12 16965 收藏 18
分类专栏: H264解码显示开发记 文章标签: H264解码 自定义信息 SEI
版权
针对h264的解析网上优秀得博文、帖子一抓一大把,我就不在这班门弄斧了,仅仅提取一些自己在用的过程中比较有用的信息,对于sei自定义信息字段,虽然网上信息很多,但不容易精确搜到,就像我之前曾遇到一篇对我个人非常有用的文章,但后面一直找不到,现在再次看到,就把部分提取了出来,记录下,方便自己后面再次用到方便,也看能不能帮助到部分码友。
参考博客:https://www.jianshu.com/p/4d9120dfcd69
NAL header
起始码(暗红底色)"0x00000001"分割出来的比特流即是NAL unit,起始码紧跟的第一个字节(墨绿底色)是NAL header。上图“NAL header”一共出现了四个数值:
- "0x06",此时NRI为"00B",NAL unit type为SEI类型。
- “0x67”,此时NRI为“11B”,NAL unit type为SPS类型。
- “0x68”,此时NRI为“11B”,NAL unit type为PPS类型。
- “0x65”,此时NRI为“11B”,NAL unit type为IDR图像。
SEI payload type
"0x06"后一个字节为“0x05”(淡黄底色)是SEI payload type,即表征SEI payload分析遵循user_data_unregistered()语法。
在国标中。sei payload type为5,为自定义消息:如图
SEI payload size
“0x05”后一个字节为“0x2F”(淡蓝底色)是SEI payload size,此时整个payload是47个字节。
SEI payload uuid
"0x2F"随后的16个字节即为uuid,此时uuid为:
dc45e9bde6d948b7962cd820d923eeef
SEI payload content
由于payload size是47个字节,除去16字节的uuid,剩下31个字节的content。由于content是字符串,所以有结束符"0x00",有效的30个字符内容是
Zencoder Video Encoding System
rbsp trailing bits
47个payload字节后的"0x80"(灰底色)即是rbsp trailing bits,在user_data_unregistered()里面都是按字节写入的,所以此时的NAL unit结尾写入的字节一定是0x80。
下面开始解析一段含SEI信息的H264数据,数据中包含,坐标信息,人员信息,先把代码贴出来,再一一说明代码中的各个部分:
注:已经去除起始码00 00 00 01了
可参考:https://blog.csdn.net/ab7936573/article/details/74135909