一 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函数

最新文章

  1. 使用bulkload向hbase中批量写入数据
  2. 常用类-StringBuffer
  3. 使用语句查询mssql死锁
  4. Linux网络统计工具/命令
  5. sqlite3使用教程1 SQLite 命令
  6. dedecms 常用标签调用
  7. ios学习-delegate、传值、跳转页面
  8. ural 1494 Monobilliards
  9. jeasyui制作计划-ajax学习
  10. MATLAB垂直搜索图片中的白段
  11. JAVA_SE基础——9.基本数据类型间的转换
  12. eclipse中查看字节码
  13. 【dp】 背包问题
  14. 管理npm源命令
  15. 在Linux下如何使用openssl生成RSA公钥和私钥对
  16. python 中的 yield 究竟为何物?生成器和迭代器的区别?
  17. 6.Python enumerate 特性
  18. 运用kNN算法识别潜在续费商家
  19. 一个人的旅行(hdu2066)Dijkstra算法模版
  20. kafka 集群的部署安装

热门文章

  1. 正式班D11
  2. Helium文档1-WebUI自动化-环境准备与入门
  3. 《Kafka笔记》4、Kafka架构,与其他组件集成
  4. Jmeter入门(4)- 注意事项
  5. Activity去掉标题不成功的解决方法
  6. JS里的小细节,持续更新
  7. AWK实现把一个文件根据内容进行分组输出多个文件
  8. 如何解决 Nginx 端口映射到外网后访问地址端口丢失的问题
  9. Java中的微信支付(2):API V3 微信平台证书的获取与刷新
  10. python使用pip安装第三方模块遇到的问题及解决方法