H264码流结构语法学习

总体结构

h264的功能分为两层,视频编码层(VCL)和网络提取层(NAL)。H.264 的编码视频序列包括一系列的NAL 单元,每个NAL 单元包含一个RBSP。一个原始的H.264 NALU 单元常由 [StartCode] [NALU Header] [NALU Payload] 三部分组成,其中 Start Code 用于标示这是一个NALU 单元的开始,必须是"00 00 00 01" 或"00 00 01"。
这里写图片描述
NAL单元是有NAL Header 和NAL Payload组成
这里简单说下body的封装过程:总计三层

  • 最内层的是SODB,也就是最原始的压缩数据,因为是压缩出来的,所以不一定是字节对齐的,所以需要做到字节对齐,对齐的方式是在最后未对齐的一个byte中,先插入一个1 其余的全部用0填充进行对齐

  • 中间层是RBSP , SODB+ rbsp_trailing_bis()就构成了RBSP,也就是在经过补齐的SODB数据

  • 最外层的是EBSP,其实就等同于是NAL Body,因为h264的标志位为0x 00 00 01 或 0x 00 00 00 01 ,万一我的RBSP中刚好就有这几个字符呢,比如说有 0x 00 00 01怎么办,所以如果遇到这种情况,规定会在0x 00 00 之后插入03 就变成了0x 00 00 03 01 ,消除威胁


详细语法学习

NAL单元语法

这里写图片描述

  • forbidden_zero_bit 应为0,不为0时表示是坏帧。
  • nal_ref_idc 不等于0 时,规定NAL 单元的内容包含一个序列参数集,或一个图像参数集,或一个参考图像
    条带,或一个参考图像的条带数据分割。
  • nal_unit_type: 表示nal type

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值