一、H.264视频编码标准

H.264视频编码标准是ITU-T与MPEG合作产生的又一巨大成果,自颁布之日起就在业界产生了巨大影响。严格地讲,H.264标准是属于MPEG-4家族的一部分,即MPEG-4系列文档ISO-14496的第10部分,因此又称作MPEG-4/AVC。同MPEG-4重点考虑的灵活性和交互性不同,H.264着重强调更高的编码压缩率和传输可靠性,在数字电视广播、实时视频通信、网络流媒体等领域具有广泛的应用。

二、H.264视频编码方法简介

在整体的编码框架方面,H.264依然采用了与前期标准类似的结构,即块结构的混合编码框架。其主要结构图如下图所示:

在H.264进行编码的过程中,每一帧的H图像被分为一个或多个条带(slice)进行编码。每一个条带包含多个宏块(MB,Macroblock)。宏块是H.264标准中基本的编码单元,其基本结构包含一个包含16×16个亮度像素块和两个8×8色度像素块,以及其他一些宏块头信息。在对一个宏块进行编码时,每一个宏块会分割成多种不同大小的子块进行预测。帧内预测采用的块大小可能为16×16或者4×4,帧间预测/运动补偿采用的块可能有7种不同的形状:16×16、16×8、8×16、8×8、8×4、4×8和4×4。相比于早期标准只能按照宏块或者半个宏块进行运动补偿,H.264所采用的这种更加细分的宏块分割方法提供了更高的预测精度和编码效率。在变换编码方面,针对预测残差数据进行的变换块大小为4×4或8×8(仅在FRExt版本支持)。相比于仅支持8×8大小的变换块的早期版本,H.264避免了变换逆变换中经常出现的失配问题。

H.264标准中采用的熵编码方法主要有上下文自适应的变长编码CAVLC和上下文自适应的二进制算数编码CABAC,根据不同的语法元素类型指定不同的编码方式。通过这两种熵编码方式达到一种编码效率与运算复杂度之间的平衡。

同前期标准类似,H.264的条带也具有不同的类型,其中最常用的有I条带、P条带和B条带等。另外,为了支持码流切换,在扩展档次中还定义了SI和SP片。

  • I条带:帧内编码条带,只包含I宏块;
  • P条带:单向帧间编码条带,可能包含P宏块和I宏块;
  • B条带:双向帧间编码条带,可能包含B宏块和I宏块;

三、H.264标准采用的编码工具

在H.264中使用的编码技术主要有以下类型:

帧内预测

H.264中采用了基于像素块的帧内预测技术。主要可分为以下不同类型:

  • 16×16大小的亮度块:4种预测模式
  • 4×4大小的亮度块:9种预测模式
  • 色度块:4种预测模式,同16×16的亮度块

16×16亮度块和色度块的4种预测模式如下图:

4×4亮度块的9种预测模式如下图表示:

帧间预测

H.264中的帧间预测方法采用了基于块的运动估计和补偿方法,其主要特点有:

  • 多个候选参考帧;
  • B帧作为参考帧;
  • 任意参考帧排序;
  • 多种运动补偿像素块形状,包括16×16、16×8、8×16、8×8、8×4、4×8和4×4像素;
  • 1/4像素(亮度)的亚像素插值;
  • 对交错视频的基于帧或场的运动估计;

进行帧间预测的宏块进行子宏块分割的方式如图所示:

亚像素插值的表示如下图。其中红色点表示图像中的整像素点的位置,绿色点表示两个正像素之间的1/2像素插值的位置,紫色点表示1/4像素插值的位置。

交错视频编码

针对隔行扫描的视频,H.264专门定义了用于处理此类交错视频的算法。

  • PicAFF:Picture Adaptive Frame Field——图像层的帧场自适应;
  • MBAFF:MacroBlock Adaptive Frame Field——宏块层的帧场自适应;

变换和量化编码

H.264的变换编码创新性地采用了类DCT的整数变换,有效降低了运算复杂度。对于基础版H.264,变换矩阵为4×4;在FRExt扩展中,还支持8×8的变换矩阵。

H.264的量化算法仍然采用标量量化方法。

无损熵编码算法

H.264标准针对不同的语法元素指定了不同的熵编码算法,主要有:

  • UVLC(Universal Variable Length Coding):主要采用指数哥伦布编码;
  • CAVLC(Context Adaptive Variable Length Coding):上下文自适应的变长编码;
  • CABAC(Context Adaptive Binary Arithmetic Coding):上下文自适应的二进制算数编码;

转载于:https://www.cnblogs.com/shuofxz/p/8375827.html

【视频编解码·学习笔记】2. H.264简介相关推荐

  1. 视音频编解码学习工程:H.264分析器

    ===================================================== 视音频编解码学习工程系列文章列表: 视音频编解码学习工程:H.264分析器 视音频编解码学习 ...

  2. 视频编解码学习笔记二—HM的使用及数字视频的格式

    一,软件下载 HEVC的官方参考软件是HM(HEVC Test Model). 下载HM需要使用到SVN. SVN是一个开源的版本控制系统.相当于一个版本控制器加备份服务器.可以回到修改以前某个时刻的 ...

  3. 视频编解码学习笔记(一)

    decode_nal_units: 起始码查找0x000001 ff_h264_decode_nal: forbiddenbit占1位 nal_ref_idc占2位 nal_unit_type占5位 ...

  4. 各种音视频编解码学习详解之 编解码学习笔记(六):H.26x系列

    最近在研究音视频编解码这一块儿,看到@bitbit大神写的[各种音视频编解码学习详解]这篇文章,非常感谢,佩服的五体投地.奈何大神这边文章太长,在这里我把它分解成很多小的篇幅,方便阅读.大神博客传送门 ...

  5. 各种音视频编解码学习详解之 编解码学习笔记(四):Mpeg系列——Mpeg 4

    最近在研究音视频编解码这一块儿,看到@bitbit大神写的[各种音视频编解码学习详解]这篇文章,非常感谢,佩服的五体投地.奈何大神这边文章太长,在这里我把它分解成很多小的篇幅,方便阅读.大神博客传送门 ...

  6. 各种音视频编解码学习详解之 编解码学习笔记(三):Mpeg系列——Mpeg 1和Mpeg 2

    最近在研究音视频编解码这一块儿,看到@bitbit大神写的[各种音视频编解码学习详解]这篇文章,非常感谢,佩服的五体投地.奈何大神这边文章太长,在这里我把它分解很多小的篇幅,方便阅读.大神博客传送门: ...

  7. 各种音视频编解码学习详解之 编解码学习笔记(十三):容器

    最近在研究音视频编解码这一块儿,看到@bitbit大神写的[各种音视频编解码学习详解]这篇文章,非常感谢,佩服的五体投地.奈何大神这边文章太长,在这里我把它分解成很多小的篇幅,方便阅读.大神博客传送门 ...

  8. 各种音视频编解码学习详解之 编解码学习笔记(八):Real系列

    最近在研究音视频编解码这一块儿,看到@bitbit大神写的[各种音视频编解码学习详解]这篇文章,非常感谢,佩服的五体投地.奈何大神这边文章太长,在这里我把它分解成很多小的篇幅,方便阅读.大神博客传送门 ...

  9. 各种音视频编解码学习详解之 编解码学习笔记(十):Ogg系列

    最近在研究音视频编解码这一块儿,看到@bitbit大神写的[各种音视频编解码学习详解]这篇文章,非常感谢,佩服的五体投地.奈何大神这边文章太长,在这里我把它分解成很多小的篇幅,方便阅读.大神博客传送门 ...

最新文章

  1. 终端主题_再见 XShell 和 ITerm 2,是时候拥抱全平台高颜值终端工具 Hyper 了!
  2. 课堂上的社死现场...
  3. Bottle 框架中的装饰器类和描述符应用
  4. MySQL数据库视图(view),视图定义、创建视图、修改视图
  5. Video在网页和移动端无法自动播放问题??
  6. 华为acl怎么生效_华为ACL配置教程(一)
  7. [原创]红马版验证码实现(中文+变形+噪点)
  8. (14)Verilog HDL参数:parameter
  9. 利用Boost影响Lucene查询结果的排序
  10. 吴恩达机器学习练习2:optimset和fminunc函数
  11. An error occured instantiating job to be executed. job-Quartz的Job无法实例化原因及解决方案总结
  12. MySQL索引类型及优化
  13. Code Project精彩系列(1)
  14. Chrome支持的MP4编解码器有限
  15. Leetcode--Java--212. 单词搜索 II
  16. Mininet系列实验(五):Mininet设置带宽之简单性能测试
  17. 互联网盈利模式研习笔记 1:流量变现
  18. Windowsnbsp;XP/Vista/Windows7常见蓝…
  19. 暖暖环游世界显示服务器异常,暖暖环游世界客服常见问题汇总
  20. SpringCloud学习记录 | 第十五篇:SpringCloud Alibaba Nacos集群版

热门文章

  1. Tomcat 运行报错 - This is very likely to create a memory leak
  2. enq: TX - row lock contention等待事件
  3. 算法设计与分析: 5-14 独立钻石跳棋问题
  4. 基于深度学习的车辆检测系统(MATLAB代码,含GUI界面)
  5. wordpress如何能实现直接粘贴把图片上传到服务器中
  6. SSH客户端中文乱码
  7. 百度AI开发者大会-你是其中一个嘛?百度Create大会(无人驾驶)
  8. 计算机在智能交通系统中应用,计算机技术在智能交通系统中的应用.doc
  9. 弘辽科技:京东店铺运营方法
  10. 目标检测算法——图像分类开源数据集汇总(附下载链接)