H.264码流格式

H.264码流格式

SODB: String Of Data Bits 原始数据比特流, 熵编码输出结果, 以bit为单位。
RBSP: Raw Byte Sequence Payload 原始字节序列负载, 在SODB最后加上trailing bits补齐为一个字节
EBSP: Extent Byte Sequence Payload 扩展字节序列负载, RBSP里面加入防伪起始码字节(0x03)
NALU: Network Abstraction Layer Units. 网络抽象层单元, 在EBSP前面加上一个字节的NALU type.

H264起始码

一个H.264码流就是很多个NALU的串接,NALU之间靠起始码分隔,找不到起始码就找不到下一个NALU的开始,也就找不到当前NALU的结束。因此起始码对于H.264码流非常重要。
在264码流里面一般会用到两种起始码,4字节 0x00 00 00 01或者3字节 0x00 00 01. 一般4字节起始码用于SPS,PPS和每帧的第一个Slice,3字节起始码用于其他的NALU(例如多slice时一帧内的非第一slice)。
由于起始码起到分隔NALU的作用,因此如果RBSP里面恰好也出现了0x00 00 01的字节组合,解码端就会误认为是下一个NALU的开始,这样会造成解码错误。因此要破坏掉RBSP里面的这种字节组合,这就是RBSP到EBSP的过程。


SODB -> RBSP
RBSP = SODB + trailing bits, 以字节为单位
SODB是以比特为单位的,熵编码的最后一个比特可能是一个字节的任意位,这时候要先增加1个rbsp_stop_one_bit, 然后是n个rbsp_alignement_zero_bit.例如SODB写到一个字节的2比特,会补1个"1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值