H264视频编码中Annex B 格式介绍

Annex B 格式是 H.264 (也称为 AVC) 视频编码标准中的一种数据表示格式,用于将视频数据从编码器传输到解码器。它主要用于流媒体传输和文件存储。

Annex B 格式的定义

在 H.264 标准中,Annex B 是一种数据格式规范,定义了如何将 H.264 码流以适合网络传输和文件存储的方式进行编码。Annex B 格式以一系列 NAL (Network Abstraction Layer) 单元组成,每个单元以特定的起始码分隔。

Annex B 格式的主要特点

  1. 起始码

    • 在 Annex B 格式中,每个 NAL 单元以一个或多个起始码 (start code) 开始。起始码是一个 3 字节或 4 字节的字节序列,常用的有:
      • 3 字节起始码:0x000001
      • 4 字节起始码:0x00000001
    • 这些起始码用于标识 NAL 单元的开始位置。
  2. NAL 单元

    • NAL 单元是 H.264 视频数据的基本传输单元,每个 NAL 单元包含一个完整的编码视频数据块。
    • NAL 单元可以有不同的类型,如 IDR 帧、P 帧、B 帧、SPS、PPS 等。
  3. NAL 单元类型

    • 每个 NAL 单元的第一个字节包含了 NAL 单元的类型信息。常见的类型包括:
      • SPS (Sequence Parameter Set):序列参数集,包含解码视频流所需的全局配置信息。
      • PPS (Picture Parameter Set):图像参数集,包含解码视频流的图像参数信息。
      • IDR (Instantaneous Decoder Refresh):关键帧,用于刷新解码器的状态。
      • Non-IDR Frames:包括 I 帧、P 帧、B 帧等其他类型的帧。

Annex B 与其他格式的对比

特性Annex B 格式AVC/MPEG-4 Part 10MP4 格式
起始码使用 0x0000010x00000001不使用起始码不使用起始码
数据组织NAL 单元以起始码分隔NAL 单元前有长度字段NAL 单元前有长度字段
用途流媒体传输、文件存储编码标准容器格式

Annex B 格式示例

假设有以下 H.264 NAL 单元数据:

0x000001 0x65 0x88 0x84 0x21 0x00 0x00 0x00 0x01 0x41 0xC8 0x00 0x00 0x00 0x01 0x68 0xEB 0x21 0x00 0x00 0x00 0x01 0x65 0x88 0x84 0x21

这里的 0x0000010x00000001 是起始码,后面的字节是 NAL 单元的内容。

将 H.264 数据从 MP4 格式转换为 Annex B 格式

MP4 格式中,NAL 单元前有一个 4 字节的长度字段,而 Annex B 格式中则使用起始码来分隔 NAL 单元。

附加信息

H.264 标准

H.264 标准是由 ITU-T H.264 和 ISO/IEC 14496-10(MPEG-4 Part 10)定义的,用于视频编码的标准。它提供了高效的视频压缩技术,广泛应用于视频流媒体、高清视频存储等领域。

MP4 容器格式

MP4 是一种常用的多媒体文件容器格式,可以包含视频、音频、字幕等多种媒体数据。MP4 文件中的视频数据通常以 AVCC 格式存储,其中 NAL 单元前面会有一个 4 字节的长度字段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Trump. yang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值