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

发布于:2024-07-10 ⋅ 阅读:(130) ⋅ 点赞:(0)

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 10 MP4 格式
起始码 使用 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 字节的长度字段。


网站公告

今日签到

点亮在社区的每一天
去签到