当前位置:网站首页>H264Nalu头部解析
H264Nalu头部解析
2020-11-09 16:06:00 【朱子龙2018】
一 NALU头部解析

F: forbidden_zero_bit. 在 H.264 规范中规定了这一位必须为 0. NRI: nal_ref_idc. 取00~11,似乎指示这个NALU的重要性,如00的NALU解码器可以丢弃它而不影响图像的回放,0~3,取值越大,表示当前NAL越重要,需要优先受到保护。如果当前NAL是属于参考帧的片,或是序列参数集,或是图像参数集这些重要的单位时,本句法元素必需大于0。 Type: 标识NAL单元中的RBSP数据类型,其中,nal_unit_type为1, 2, 3, 4, 5的NAL单元称为VCL的NAL单元,其他类型的NAL单元为非VCL的NAL单元。
二 NALU Type 解析nalu type的计算方式
在每一帧的起始码(00 00 00 01)之后取到nalu头部code 一个字节
用该公式计算nalutype :int type = code & 0x1fnalu type
nal_unit_type. 这个NALU单元的类型,1~12由H.264使用,24~31由H.264以外的应用使用,简述如下:0 没有定义
1-23 NAL单元 单个 NAL 单元包
1 不分区,非IDR图像的片
2 片分区A
3 片分区B
4 片分区C
5 IDR图像中的片
6 补充增强信息单元(SEI)
7 SPS
8 PPS
9 序列结束
10 序列结束
11 码流结束
12 填充
13-23 保留 24 STAP-A 单一时间的组合包
25 STAP-B 单一时间的组合包
26 MTAP16 多个时间的组合包
27 MTAP24 多个时间的组合包
28 FU-A 分片的单元
29 FU-B 分片的单元
30-31 没有定义
常见数据帧
序列参数集 SPS----7:
SPS即Sequence Paramater Set SPS中保存了一组编码视频序列(Coded video sequence)的全局参数。所谓的编码视频序列即原始视频的一帧一帧的像素数据经过编码之后的结构组成的序列。而每一帧的编码后数据所依赖的参数保存于图像参数集中。一般情况SPS和PPS的NAL Unit通常位于整个码流的起始位置。但在某些特殊情况下,在码流中间也可能出现这两种结构,主要原因可能为: 1:解码器需要在码流中间开始解码; 2:编码器在编码的过程中改变了码流的参数(如图像分辨率等);
图像参数集 PPS----8:
除了序列参数集SPS之外,H.264中另一重要的参数集合为图像参数集Picture Paramater Set(PPS)。通常情况下,PPS类似于SPS,在H.264的裸码流中单独保存在一个NAL Unit中,只是PPS NAL Unit的nal_unit_type值为8;而在封装格式中,PPS通常与SPS一起,保存在视频文件的文件头中。
关键帧 IDR 帧----5:
I帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)
P帧 ----1:
P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)
三 参考代码
h264nalu头部解析可参考ffmpeg源码 h264_parser.c的parse_nal_units函数
版权声明
本文为[朱子龙2018]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/3831427/blog/4710099
边栏推荐
- Echart sets the spacing between columns
- 华为云GaussDB:从颠覆自我到颠覆行业,重构数据库市场新格局
- CAD tutorial cad2016 installation course
- High quality defect analysis: let yourself write fewer bugs
- 融云完成数亿人民币 D 轮融资,将持续打造全球云通信能力
- 移动安全加固助力 App 实现全面、有效的安全防护
- Infrastructure testing based on chef inspec
- 堆重启_uaf_hacknote
- 使用art-Template模板获取天气预报信息
- Some common types of error exception in Python
猜你喜欢

设置背景图片的两种方式,并解决手机端背景图片高度自适应问题

CAD2020下载AutoCAD2020下载安装教程AutoCAD2020中文下载安装方法

Installation and testing of Flink

岗位内推 | 微软亚洲研究院智能多媒体组招聘计算机视觉算法实习生

深入分析商淘多用户商城系统如何从搜索着手打造盈利点

程序员买房前后对比,看完后已哭瞎...

Express yourself with wechat expression translation, programmer's little romance, get up quickly!

How to download and install autocad2020 in Chinese

A certification and authorization solution based on. Net core - hulutong 1.0 open source

MES系统在行业应用里区别于传统式管理
随机推荐
Decision tree algorithm theory
It's so easy to replace the video background with the sound and shadow
js字符与ASCII码互转的方法
Kubernetes V1.19.3 kubeadm 部署笔记(中)
乘风破浪的技术大咖再次集结 | 腾讯云TVP持续航行中
A certification and authorization solution based on. Net core - hulutong 1.0 open source
瞧瞧,这样的『函数』才叫 Pythonic
Programmers before and after buying a house, after reading has cried blind
. net report builder stimulsoft Reports.Net Release the latest version of v2020.5!
在Python中创建文字云或标签云
移动安全加固助力 App 实现全面、有效的安全防护
Offline installation method of Arthas without network environment
Arthas install quick installation document
MES system plays an important role in the factory production management
Super discount, cloud server 88 yuan seconds
你以为学编程很简单吗,其实它很难!你以为学编程很难吗,其实它很简单!
【亲测有效】Github无法访问或者访问速度的解决方案
Native地图与Web融合技术的应用与实践
CAD tutorial cad2016 installation course
AutoCAD 2020 installation package & Installation Tutorial