1.基本概念

1.1 slice

H264标准引入了slice概念,一帧图像可以分成几个slice分别进行编码。这样的好处是可以避免误差扩散。由于slice是单独编码,一幅图像前一个slice出错,不会影响到后一个slice。
如下图所示,一个图像被分成两个slice。

1.2 宏块

H264标准规定slice需要分成16x16大小的块分别编码,这些数据块就是宏块(macroblock)。以YUV420数据为例,一个宏块包含16x16亮度数据块和2个8x8色度数据块。
宏块按照数据编码方式可分为帧宏块和场宏块。
以下图为例,有两个16x16大小宏块mb1、mb2,其中奇数行数据用蓝色线表示,偶数行数据用绿色线表示。帧编码格式不改变原始宏块数据排列方式,直接对宏块编码;而场编码格式会把mb1、mb2的奇数行数据和偶数行数据分别抽出来组成两个新的宏块再分别编码,mb1、mb2称为宏块对。

1.3 PAFF(picture adptive frame/field)、mbaff(mb adptive frame/field)

对于一个slice来说,内部所有宏块可能使用帧编码方式也有可能使用场编码方式。

  • 如果一个slice中的宏块存在帧编码和场编码宏块,则slice是MBAFF;
  • 如果某个slice所有宏块都是帧编码,则该slice为帧编码slice;
  • 如果某个slice所有宏块都是场编码,则该slice为场编码slice;
  • 如果视频序列中即存在帧编码slice,又存在场编码slice,则为PAFF。

2.码流结构

H264码流结构如下,可分为以下几层:

  • 视频序列层,该层为一个完整的视频压缩码流,包括参数集和视频图像组(GOP);
  • GOP层(Group of picture),由多个视频图像组成,包括I、P、B三种类型帧。
  • nalu层,包含header和data两部分,header中的nalu_type指明了该NALU类型,比较常见的几种NALU有:sps、pps、slice,其中视频压缩码流都存放在slice。
  • slice层,一个或多个slice构成一张图片数据;slice头中包含着slice类型、宏块类型、以及图像参数等信息。
  • slice data层,slice data由一个或多个宏块结构组成;
  • mb层,宏块是h264编码的基本单元,编码过程中整个图像会划分成16x16大小的单元,也就是宏块,它包含着每一个像素的亮度和色度信息,分别对宏块数据残差编码得到最终码流信息。
  • 残差层,残差数据是最终视频编码的码流数据,通过对残差数据解码可以恢复原始图片。

H264/AVC-基本概念和码流结构相关推荐

  1. H.264码流结构解析

    大概前五六年之前写过的一个大体分析H.264格式,不是很详细,可以大致看看有哪些格式.  H.264码流结构解析 那个时候上传的百度文库,以前记得有多积分,现在都不能下载了,还要充钱才可以.真是~~~ ...

  2. 【AV1 spec学习一】OBU类型及码流结构

    [AV1 spec学习一]OBU类型及码流结构 基本概念 基本语法表示形式 OBU类型 码流结构 基本概念 刚开始看AV1 spec,对一些初见的名词在此做些记录,随见随添. 缩写 全称 含义 OBU ...

  3. AVS3码流结构解析

    AVS3编码学习过程中,很重要的一部分是捋清码流结构.通过学习AVS3-P2(FCD 2.0)-20200403_N2805.pdf,博主整理了AVS3的码流结构思维导图,并将编码树.编码单元.变换单 ...

  4. H.264码流结构及JM8.6中码流的产生步骤

    整理自:http://www.cnblogs.com/xkfz007/archive/2012/08/12/2612931.html H.264中的码流结构 H.264码流结构示意图: NALU第一字 ...

  5. 【mpeg】mpeg1、mpeg2与mpeg4码流结构区别分析

    Date: 2018.10.25 1.参考 http://www.cnblogs.com/CoderTian/p/9246225.html 2.前言     最近在学习和研究MPEG-2标准的过程中, ...

  6. H.264中NALU、RBSP、SODB的关系 (弄清码流结构)

    NALU:Coded H.264 data is stored or transmitted as a series of packets known as NetworkAbstraction La ...

  7. 【H264/AVC 句法和语义详解】(二):h264码流格式与NALU详解一

    上一篇中,我们站在句法元素(或称语法元素)的角度,介绍了H.264的句法和语义,和句法元素的分层结构.在这篇中,我们更进一步,从比特的角度出发,来探索h264码流的组成.通过这篇的学习,我们会初步具备 ...

  8. (推荐阅读)H264, H265硬件编解码基础及码流分析

    需求 在移动端做音视频开发不同于基本的UI业务逻辑工作,音视频开发需要你懂得音视频中一些基本概念,针对编解码而言,我们必须提前懂得编解码器的一些特性,码流的结构,码流中一些重要信息如sps,pps,v ...

  9. h264码流及h265码流结构分析,NAL头类型分析

    视频编码标准规定了编码后码流的语法语义,也就阐明了从比特流提取语法元素并进行解释的方法,也就是视频的解码过程.   1.h264码流结构解析:     H.264/AVC(Advanced Video ...

  10. H264—MP4格式及在MP4文件中提取H264的SPS、PPS及码流

    SkySeraph Apr 1st 2012 Email:skyseraph00@163.com 一.MP4格式基本概念 MP4格式对应标准MPEG-4标准(ISO/IEC14496) 二.MP4封装 ...

最新文章

  1. oracle常见表,ORACLE常见视图和表整理
  2. 剑指offer 算法 (抽象建模能力)
  3. Spring ribbon
  4. 「Vue」vuex 的使用
  5. 跳出多重循环_代码里的俄罗斯套娃 | 07 多重循环
  6. Java ==和equals有什么区别?
  7. 命令行下修改文件访问控制权限
  8. php_字符编码浅谈_积累中。。。
  9. 【UnityEditor】根据枚举的不同显示各自对应的内容
  10. Dbf文件转Excel
  11. 调查问卷的JSON模板设计与分数计算的Java实现
  12. Visual Studio Code 官方护眼主题绿豆沙颜色修改,让你的眼睛远离疲劳!
  13. conda安装tensorflow2.x和pytorch1.8.0的一些常用命令
  14. 软件开发英语面试自我介绍及问答
  15. 詹姆斯·西蒙斯-数学,常识和运气
  16. 「云」上风景虽好,但不要盲目跟风
  17. IKAnalyzer 配置文件介绍
  18. 什么是CART算法?怎么对CART进行建树?怎么对CART进行减枝叶?CART Python实现代码
  19. 台舟电源芯片 TPMP1470使用问题记录
  20. iPad mini Retina越狱小结

热门文章

  1. 信息学奥赛一本通(c++):1336:【例3-1】找树根和孩子
  2. moment.js时间格式转换
  3. ubuntu安装wps后缺少字体无法打开
  4. 桌面改成d盘如何改回去 修改注册表可以如何生效
  5. 【STM32H7】第10章 ThreadX GUIX移植到STM32H7(GCC)
  6. 科学计算机deg怎么用,科学计算器使用教程.ppt
  7. 39、C++11多线程及其学习笔记
  8. When it’s time to quit, that’s the time to carry on.
  9. 怎么把文件word转换成pdf格式
  10. 【语音信号处理】3语音信号可视化——prosody