H265Nalu头部解析
一 NALU头部解析
F: 必须为0,为1表示语法错误。整包将被丢弃
NalType:nalu包的类型,其中VCL NAL和non-VCL NAL各有32类。0-31是vcl nal单元;32-63,是非vcl nal单元。VCL是指携带编码数据的数据流,而non-VCL则是控制数据流.
LayerId:表示NAL所在的Access unit所属的层,该字段是为了HEVC的继续扩展设置。也就是目前都是0,以后的扩展可能会用到。
TID:
此字段指定nal单元加1的时间标识符。时间id的值等于tid-1,tid的值为0是非法的,以确保nal单元报头中至少只有一个比特等于1,以便能够在nal单元头和nal单元有效负载数据中独立考虑启动代码仿真。
当head为40 01 ====》0100 0000 0000 0001时,解析如下
F | 0 | |
NalType | 100 0000 | 32/VPS |
LayerId | 0 0000 0 | 0 |
TID | 001 | 1 |
二 NALU type 解析nalu type的计算方式
在每一帧的起始码(00 00 00 01)之后取到nalu头部code 两个字节
用该公式计算nalutype :int type = (code & 0x7E)>>1;Nalu type
val nal
non-vcl nalu
常用nalu type
语义为视频参数集 VPS
HEVC_NAL_VPS 32
语义为序列参数集 SPS
HEVC_NAL_SPS 33
语义为图像参数集 PPS
HEVC_NAL_PPS 34
语义为补充增强信息 SEI
HEVC_NAL_SEI_PREFIX 39HEVC_NAL_SEI_SUFFIX 40
视频帧数据流IDR ------ 下列均为视频帧,若要区分I B P 需要进一步分析
HEVC_NAL_TRAIL_N 0
HEVC_NAL_TRAIL_R 1
HEVC_NAL_TSA_N 2
HEVC_NAL_TSA_R 3
HEVC_NAL_STSA_N 4
HEVC_NAL_STSA_R 5
HEVC_NAL_BLA_W_LP 16
HEVC_NAL_BLA_W_RADL 17
HEVC_NAL_BLA_N_LP 18
HEVC_NAL_IDR_W_RADL 19
HEVC_NAL_IDR_N_LP 20
HEVC_NAL_CRA_NUT 21
HEVC_NAL_RADL_N 6
HEVC_NAL_RADL_R 7
HEVC_NAL_RASL_N 8
HEVC_NAL_RASL_R 9
SPS PPS和VPS的关系
三 参考代码
h265nalu头部的解析可参考ffmpeg代码
hevc_parser.c的parse_nal_units函数
最新文章
- 使用bulkload向hbase中批量写入数据
- 常用类-StringBuffer
- 使用语句查询mssql死锁
- Linux网络统计工具/命令
- sqlite3使用教程1 SQLite 命令
- dedecms 常用标签调用
- ios学习-delegate、传值、跳转页面
- ural 1494 Monobilliards
- jeasyui制作计划-ajax学习
- MATLAB垂直搜索图片中的白段
- JAVA_SE基础——9.基本数据类型间的转换
- eclipse中查看字节码
- 【dp】 背包问题
- 管理npm源命令
- 在Linux下如何使用openssl生成RSA公钥和私钥对
- python 中的 yield 究竟为何物?生成器和迭代器的区别?
- 6.Python enumerate 特性
- 运用kNN算法识别潜在续费商家
- 一个人的旅行(hdu2066)Dijkstra算法模版
- kafka 集群的部署安装