H.264——H.264码流封装格式:流格式与包格式

本文详细介绍了H.264编码后的码流封装格式,包括Annex-B字节流和RTP数据包格式。重点讲解了NALUnit的结构,起始码、实际数据和尾部信息。还提供了NALUnit的提取方法,通过查找起始码来定位每个单元。内容结合实例展示了如何在实际视频编解码过程中处理H.264码流。
摘要由CSDN通过智能技术生成

H.264的码流封装格式

在H.264语法元素进行编码之后,生成的输出数据都封装为NALU(nal unit)进行传递。多个NALU组合在一起就形成了输出码流

对于不同的应用场景,NALU规定了一种通用的格式来适应不同类型的传输封装类型,一般分为两大类:

  • Annex-B字节流格式

    • 大部分编码器的默认输出格式
    • 每个NAL Unit以规定格式的起始码分割
    • 起始码:0x 00 00 00 01 或 0x 00 00 01
  • RTP数据包格式

    • 直接封装NAL Unit,无起始码(封包时有长度信息)
    • 每个NAL Unit之前以几个字节表示NAL Unit的长度

NAL Unit字节流格式

再标准协议文档中,定义在Annex B - Byte stream format
在这里插入图片描述
下图中就是NAL Unit的语法
在这里插入图片描述

  • leading_zero_8bits——f(8)
    表示长度为一个字节的前导0,即0x00,长度固定为8bit。

  • ——f(8)如果后面的24bit不为0x00 00 01的话,接下来的就是一个字节的0数据即0x00。

  • start_code_prefix_one_3bytes——f(24)
    表示长度是三个字节的整数1,即0x00 00 01,长度固定为24bit

  • nal_unit(NumBytesInNALunit)
    nal unit的实际数据

  • trailing_zero_8bits——f(8)
    末尾的0数据,一个字节0x00

在这里插入图片描述

NAL Unit提取方法

在这里插入图片描述

  • 查找start_code_prefix之间的数据,也就是0x00 00 00 01或0x00 00 00 01之间的数据即可

检验
视频编解码——使用H.264视频编解码器JM进行YUV图像序列的编解码
这篇文章中使用JM将yuv编成h.264。

使用notebook打开.264文件
在这里插入图片描述
可以看到,码流是以00 00 00 01开始的,在一个NAL Unit后,以第二个00 00 00 01开始第二个NAL Unit

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Spark!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值