当前位置: 首页 > news >正文

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

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

文章目录

      • Annex B 格式的定义
      • Annex B 格式的主要特点
      • Annex B 与其他格式的对比
      • Annex B 格式示例
      • 将 H.264 数据从 MP4 格式转换为 Annex B 格式
      • 附加信息
        • H.264 标准
        • MP4 容器格式

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 字节的长度字段。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【unity实战】Unity中使用A*寻路+有限状态机制作一个俯视角敌人AI
  • 用python生成带图片的二维码(python实例二十二)
  • 力扣995.K连续位的最小翻转次数
  • 【深度学习】图形模型基础(6):模型优化理论
  • 1、预处理
  • 【Linux】进程(9):进程控制3(进程程序替换)
  • centos安装数据库同步工具sqoop并导入数据,导出数据,添加定时任务
  • java线程介绍
  • Sharding-JDBC分库分表之SpringBoot分片策略
  • 前端实现无缝自动滚动动画
  • 【leetcode刷题笔记】02.复写零
  • 华为HCIP Datacom H12-821 卷28
  • Postman使用教程【项目实战】
  • Java 8革新:现代编程的全新标准与挑战
  • 《梦醒蝶飞:释放Excel函数与公式的力量》10.4 IMREAL函数
  • ----------
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Less 日常用法
  • Windows Containers 大冒险: 容器网络
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 工作中总结前端开发流程--vue项目
  • 面试遇到的一些题
  • 巧用 TypeScript (一)
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 微信小程序:实现悬浮返回和分享按钮
  • 小程序开发中的那些坑
  • 学习笔记TF060:图像语音结合,看图说话
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 智能合约Solidity教程-事件和日志(一)
  • ​ubuntu下安装kvm虚拟机
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (21)起落架/可伸缩相机支架
  • (BFS)hdoj2377-Bus Pass
  • (PySpark)RDD实验实战——取最大数出现的次数
  • (python)数据结构---字典
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (笔试题)分解质因式
  • (多级缓存)多级缓存
  • (力扣题库)跳跃游戏II(c++)
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (四)c52学习之旅-流水LED灯
  • (四)opengl函数加载和错误处理
  • (转)德国人的记事本
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .equals()到底是什么意思?
  • .naturalWidth 和naturalHeight属性,
  • .NET : 在VS2008中计算代码度量值
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .NET 读取 JSON格式的数据
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .Net中wcf服务生成及调用
  • .so文件(linux系统)
  • @RunWith注解作用