news 2026/6/27 2:22:12

(第五讲)NALU- AnnexB- AVCC概念区分

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
(第五讲)NALU- AnnexB- AVCC概念区分

文章目录

  • 一、核心名词区分
    • 1. NALU(Network Abstraction Layer Unit,网络抽象层单元)
    • 2. AnnexB 格式(带起始码的裸流,你平时文件/摄像头输出的标准裸流)
      • 定义:NALU 前面拼接 **起始码前缀**
    • 3. AVCC / AVCC Annex(不带起始码,长度前缀封装)
  • 二、一句话总结对应关系
  • 三、结合你之前FFmpeg推流场景重点
  • 四、示例对比
    • AnnexB(标准264裸流,带起始码)
    • 纯NALU(剥离起始码)
    • AVCC(RTMP/MP4内部,长度头代替起始码)

从这讲开始,我们进入了编码的深水区,这些内容的概念一定要头脑清楚,否则后面开发容易混淆。

一、核心名词区分

1. NALU(Network Abstraction Layer Unit,网络抽象层单元)

NALU = 去掉起始码后的一段纯载荷二进制

  • 内部结构:1字节NALU头 + 视频数据(SPS/PPS/I/P帧等)
  • 特征:不带00 00 01/00 00 00 01起始码
  • 所有H264最小数据单元都叫NALU:
    NALU Type=7 → SPS;Type=8 → PPS;Type=5 → I帧;Type=1 → P帧

2. AnnexB 格式(带起始码的裸流,你平时文件/摄像头输出的标准裸流)

定义:NALU 前面拼接起始码前缀

起始码两种:

  1. 3字节:0x00 00 01(普通NALU前缀)
  2. 4字节:0x00 00 00 01(码流第一个NALU、分片开头常用)

结构:[起始码] + NALU

  • 后缀文件:.h264/.264
  • 场景:海康/大华RTSP输出裸流、本地保存的裸流文件、FFmpeg-f h264识别的流
  • 关键词:AnnexB裸流、AnnexB格式H264、带起始码裸流

3. AVCC / AVCC Annex(不带起始码,长度前缀封装)

没有0001起始码,取而代之用4字节大端长度描述NALU长度
结构:[4字节NALU长度] + NALU

  • 场景:MP4容器、FLV/RTMP内部封装、MP4文件内部存储H264
  • RTMP协议内部传输H264时,内部是AVCC格式,不带起始码

二、一句话总结对应关系

  1. 不带任何起始码,纯载荷→ NALU
  2. NALU + 0001/000001起始码→ AnnexB H264裸流(标准.264文件)
  3. NALU + 4字节长度头,无起始码→ AVCC格式(MP4/RTMP内部)

三、结合你之前FFmpeg推流场景重点

  1. 本地.h264文件、摄像头RTSP原始码流 =AnnexB(带起始码NALU)
    FFmpeg 参数-f h264专门识别这种格式;
  2. 推RTMP到SRS时:
    FFmpeg内部会自动把AnnexB → 转成AVCC封装进FLV Tag,自动去掉起始码,替换成长度头,你不用手动处理。

四、示例对比

AnnexB(标准264裸流,带起始码)

00 00 01 67 xx xx ...
00 00 01 68 xx xx ...
00 00 01 65 xx xx ...

纯NALU(剥离起始码)

67 xx xx ...(SPS NALU)
68 xx xx ...(PPS NALU)
65 xx xx ...(I帧 NALU)

AVCC(RTMP/MP4内部,长度头代替起始码)

00 00 00 12 67 xx xx ...
前4字节00 00 00 12= 后面NALU字节长度。根据大端规则,表示后面18个字节。

补充规则(AVCC/FLV/RTMP 统一)

  • 长度字段固定 4 字节、大端存储;
    长度只包含 NALU 本体,不包含这 4 字节长度头自己;
  • 和 AnnexB 区别:
    AnnexB:00 00 01 起始码分割 NALU
    AVCC:4 字节长度头声明 NALU 长度,无起始码
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/27 2:20:55

爬虫转大模型:一篇讲清核心用法

《爬虫转大模型:一篇讲清核心用法》看起来是个大话题,但真落到项目里,常常就是几个具体选择。下面我尽量按实际开发时会遇到的问题来讲。摘要这篇面向想从爬虫和自动化采集转向 AI 数据工程的开发者,但不会把“爬虫转大模型&#…

作者头像 李华
网站建设 2026/6/27 2:19:16

TensorFlow 与 PyTorch 生产级对比:训练性能、部署生态与选型决策

TensorFlow 与 PyTorch 生产级对比:训练性能、部署生态与选型决策一、框架选型的现实困境:不止是"哪个更好"的问题 深度学习框架的选型是每个 AI 团队必须面对的基础决策。TensorFlow 和 PyTorch 作为两大主流框架,各有优势与短板。…

作者头像 李华
网站建设 2026/6/27 2:12:35

帮我构思一个项目:Trae、Codearts atomcode 等AI agent的调度中心 优先windows系统,通过句柄获得这些AI agent的任务信息,对其进行跟踪,用户可以通过调度中心发布

帮我构思一个项目:Trae、Codearts atomcode 等AI agent的调度中心 优先windows系统,通过句柄获得这些AI agent的任务信息,对其进行跟踪,用户可以通过调度中心发布新任务,并修改和回应当前的任务。群星(Star…

作者头像 李华
网站建设 2026/6/27 2:10:47

JSP页面500报错:空对象属性访问实战避坑

JSP页面直接输出实体对象空属性引发页面500报错实战案例 一、问题背景 传统Java Web项目开发中,大量业务页面使用JSPEL表达式渲染数据。开发人员常直接通过${对象.属性}输出实体字段,忽略属性为null、实体对象本身为空的场景。 当实体对象为null&#xf…

作者头像 李华
网站建设 2026/6/27 2:08:58

Mega安汇:新手更在意的外汇市场服务体验,这里做个视角盘点

对多数外汇相关用户来说,判断平台并不需要复杂术语,关键在于信息能否被快速理解、关键提示是否容易找到、服务体验是否稳定一致。以Mega安汇为例,这里聚焦这些更贴近实际使用的亮点与细节。外汇相关平台的价值,体现在长期一致性与…

作者头像 李华
网站建设 2026/6/27 1:50:54

华为非AI方向笔试真题 6月24号【电影放映调度问题】

电影放映调度问题(C/Py/Java/Js/Go)题解华为笔试真题 6月24号 非AI方向第一题 100分题型题目内容 某电影院有 111 块银幕,每天需要安排多部电影在不同时段进行放映。每部电影有固定的放映时长和要求的放映时间段,且每个被选中放映的电影确保在对应时段能…

作者头像 李华