H.264/AVC视频编解码技术详解

H.264/AVC视频编解码技术详解
共130节 81984人在学 课程详情
  • 视频信息与压缩编码

    • 人与世界的交互、视频信息的意义
    • 视频信号的表示方法
    • 视频压缩编码
  • 主流视频编码标准的技术发展

    • 主流视频编码标准的发展
    • H.261编码标准
    • H.263、MPEG-1、MPEG-2、MPEG-4编码标准
  • H.264/AVC编码标准

    • H.264/AVC的背景与基本概念
    • H.264视频编码整体架构
    • H.264所采用的编码工具
  • 常见H.264视频编解码器(X264和JM)及参考软件JM的下载与编解码

    • H.264编码器JM与X264
    • 使用JM编解码器进行H.264的编码和解码
  • H.264码流结构

    • H.264的码流封装格式:流格式与包格式
    • 实践:从码流中读取NAL Unit的方法
    • 实践:读取并保存码流中的NAL Unit数据
  • NAL Unit解析

    • NAL Unit 结构分析
    • H.264码流分析器SimpleH264Analyzer工程创建
    • SimpleH264Analyzer解析码流为NAL Unit
    • SimpleH264Analyzer中实现对NAL Unit分析
  • 熵编码算法(1)——基础知识

    • 熵编码的基本概念
    • 哈夫曼编码的原理
    • 实现哈夫曼编码
  • 熵编码算法(2)——H.264标准中的熵编码、指数哥伦布编码

    • H.264中定义的符号解析方法与支持的熵编码算法
    • 指数哥伦布编码的原理和分类
    • 实现指数哥伦布编码
  • H.264的序列参数集Sequence Paramater Set(SPS)

    • H.264的序列参数集SPS结构
    • SimpleH264Analyzer优化、添加Log机制
    • 设计SPS类的结构
    • 在SimpleH264Analyzer整合定长编码、指数哥伦布编码解析算法
    • 实现SPS语法元素的解析和保存
  • H.264的图像参数集Picture Paramater Set(PPS)

    • H.264的图像参数集PPS结构
    • 设计PPS类的结构
    • 实现PPS语法元素的解析和保存
  • H.264的Slice层解析

    • H.264中Slice的概念
    • H.264中Slice的结构
    • 定义I_Slice和SliceHeader结构
    • 解析IDR帧的SliceHeader结构
  • H.264的宏块Macroblock级解析

    • H.264视频中Slice Data结构
    • H.264视频帧的分割与宏块结构
    • H.264的帧内预测宏块的数据结构定义
    • 解析H.264码流的帧内宏块语法元素
  • 熵编码算法(3)——上下文自适应的变长编码CAVLC

    • CAVLC的基本概念与算法
    • CAVLC编码一个系数矩阵(1)
    • CAVLC编码一个系数矩阵(2)
    • CAVLC语法元素解析:数据结构定义
    • CAVLC宏块分割与H.264宏块的邻块可用性
    • 实现开始CAVLC解码一个宏块的准备工作
    • 计算获取CAVLC解码的上下文信息的方法
    • 解析H.264宏块中的block残差的numCoeff和trailingOnes
    • 读取拖尾系数的符号
    • 读取非零系数Level值
    • 读取解析零系数总个数totalZeros
    • 读取零系数游程长度runBefore
    • 解析H.264宏块中的宏块残差语法元素
  • 变换和量化编码(1):矩阵的正交变换原理

    • 矩阵的运算与变换
    • 正交矩阵与矩阵的正交变换
    • 离散余弦变换
  • 变换和量化编码(2):H.264的整数变换方法

    • 从Residual语法元素重建变换系数矩阵(1)
    • 从Residual语法元素重建变换系数矩阵(2)
    • H.264的整数变换方法
    • H.264的量化与反量化
    • 解码预测残差变换系数的反量化
    • 残差系数矩阵的反变换
  • 帧内预测编码(1):帧内预测编码的基本原理

    • 帧内编码的意义与作用
    • 早期视频编码标准的帧内编码
    • 预测编码
    • H.264的帧内预测模式
  • 帧内预测编码(2):H.264帧内编码的方法与实现

    • H.264的帧内预测语法元素的表示方法
    • 帧内预测解码的主要流程
    • 推导子像素块的帧内预测模式
    • 解码宏块、获取子块的预测块
    • 由子块索引推导子块相对宏块的位置
    • 获取相邻块的位置和有效性
    • 导出当前块的预测模式(上)
    • 导出当前块的预测模式(下)
    • 获取帧内预测参考像素(1):方法
    • 获取帧内预测参考像素(2):实现
    • 由参考数据生成预测像素块(上)
    • 由参考数据生成预测像素块(下)
    • 通过预测块与残差数据重建解码像素块
  • 熵编码算法(4)——算术编码的原理与实现方法

    • 算术编码的基本概念
    • 算术编码的基本流程
    • 算术编码器实例的声明
    • 实现一个基本的算术编码器内核
    • 单步调试研究算术编码器内部工作原理与细节(上)
    • 单步调试研究算术编码器内部工作原理与细节(下)
    • 揭秘区间运算与算术编码实现之间的联系
    • 算术编码最广泛的应用场景之一——H.264 Main Profile
  • 熵编码算法(5)——H.264的CABAC(上):语法元素的二值化方法

    • H.264的CABAC基本概念
    • CABAC编码器的初始化
    • 常用语法元素二值化方法
    • 特定语法元素的二值化
  • H.264的去块滤波器

    • 视频编码块效应与去块滤波基本原理
    • 去块滤波的执行过程
    • 块/宏块边沿的滤波方法
    • 去块滤波的实现案例(1):框架结构
    • 去块滤波的实现案例(2):计算滤波强度
    • 去块滤波的实现案例(3):获取参考像素信息
    • 去块滤波的实现案例(4):获取参考像素信息(续)
    • 去块滤波的实现案例(5):滤波边界像素1-数据准备
    • 去块滤波的实现案例(6):滤波边界像素2-判断条件
    • 去块滤波的实现案例(7):滤波边界像素
    • 去块滤波的实现案例(8):水平边沿像素滤波
  • 熵编码算法(6)——H.264的CABAC(中):CABAC的上下文环境

    • CABAC的编解码上下文
    • 上下文模型索的初始化与更新
    • CABAC编解码上下文的导出
  • 熵编码算法(7)——H.264的CABAC(下):语法元素的CABAC解析

    • CABAC解码总流程
    • CABAC算术编码的解码(解析)过程
    • CABAC解码归一化过程
    • CABAC的bypass和终止符解析方法
    • CABAC在JM8.6中的实现——初始化方法
    • CABAC在JM8.6中的实现——宏块类型的解析方法
    • CABAC在JM8.6中的实现——DecodeDecision和DecodeTerminate的实现
  • 帧间预测编码(1):帧间预测编码的基本原理

    • 视频信息的时间冗余与物体的运动表示
    • 块结构的运动估计和运动补偿
    • 运动矢量
    • 运动矢量预测的计算方法
    • 亚像素差值
    • 运动搜索快速算法
  • 帧间预测编码(2):参考帧与图像管理

    • 基本概念
    • 解码顺序与显示顺序
    • 图像管理-计算图像索引
    • 标记参考帧-滑动窗口法标记参考帧
    • 标记参考帧-自适应内存控制法标记参考帧
  • 帧间预测编码(3):参考帧列表

    • 参考帧列表
    • 参考帧列表的初始化
    • 参考帧列表修改过程
  • 帧间预测编码(4):宏块的帧间解码

    • 帧间预测宏块类型
    • 帧间编码宏块的格式
    • Skip模式和Direct预测
  • 总结

    • 总结

    订阅失败

    H.264/AVC视频编解码技术详解
    H.264/AVC视频编解码技术详解 ...

    订阅列表已满,请先移出部分订阅内容。

    当前章节需购买后观看
    开通超级会员免费看!专家精选系列课程,满足你从入门到精通!更有问答月卡免费送,你的问题有问必答!
    提交答案

    购买课程

    扫码完成付费,可继续学习全部课程内容

    加载中...
    播放页问题反馈
    视频学习中有任何产品建议都可由此反
    馈,我们将及时处理!

    课时介绍

    各位观众朋友们,大家好。今天我们继续学习 H.264 视频编码技术。在前面,我们已经实现了 H.264 格式的 NLUnit,用于 H.264 视频传输的基本数据单元的提取和解析。在接下来进行每一个 NLUnit 的语法元素的解析之前,我们需要了解 H.264 中一个非常重要的概念,就是熵编码。 熵编码是一个比较复杂的部分,我们需要分几次来研究。今天,我们先看一下熵编码的最基本概念和一些基础知识。首先,我们来看一下什么是熵以及什么是熵编码。所谓熵这个概念,原本是来自于化学和热力学中,用于度量能量退化的指标。也就是说,如果熵越高,那么这个物体或者这个系统的可做工能力变得越低。后来,信息论的奠基人香农将熵的这一概念引入到信息论中,用它来表示消息的平均信息量。信源的熵通常可以用来表示这个信源所发出信息的不确定性,也就是说,越是随机的、前后不相关的信息,那么它的熵就越高。 在信息论中,香农提出了一个很重要的概念,叫做信源编码定理。这个定理说明了香农熵与信源符号概率之间的关系。这一概念说明了信息的熵为信源的无损编码后平均码字长度的下限。任何的无损编码方法都不可能使编码后的每一个码源的平均码长小于香农熵,只可能尽量地与这个香农熵的值接近。 下面,我们来看两幅图。这两幅图可以大致的表明信息或者物体系统的混乱程度与信息的熵之间的关系。左边的图有红球和蓝球,右边的图也是有红球和蓝球。如果我们想用信息来表示这两对球,我们该怎么表示呢?首先,这两对球相似的地方都是有 4、5 或 20 个球是整整齐齐排列的。不同的是,它们的颜色混乱度是不同的。左边的 20 个球,它们的红球和蓝球的排列是不规律的,而右边则是非常规律的,上半部分是红球,下半部分是蓝球。那么,我们想表示这些球的关系所付出的代价其实也是不一样的。比如,如果我们要表示左边这堆比较混乱的球,那么我们必须要说明,第一行球前面两个是红色,其余是蓝色;第二行球第一个和第四个是红色,其余是蓝色;第三行球二、三是红球,其余是蓝色的;第四行球只有第二个是蓝色的,其余是红色的。这种方式表达这堆球的关系相对来说是非常繁琐的。由于它们之间的排列关系并没有什么规律,它进行改进和压缩的空间也不是特别大。而如果我们要表示右边这 20 个球的时候,我们就可以用非常简洁的语言表示,也就是说,20 个球分成了四排,上面的 10 个是红球,下面的 10 个是蓝球。这样,就可以非常清楚地表示右边这些球的关系。 因此,从这两堆球中,我们也可以大致地看出一个规律,就是像这些混乱度比较高的数据或者信源,它们的排列和它们所表达的信息更难于被压缩。同样,这些混乱度比较高的球,它们的熵也更高。而右边这些球,它们的排列是非常规律的,因此它们的熵就比较低。所以,也可以用比较少量的信息来表示这些球的关系。通过这种方式,我们就可以大致地理解熵编码的一些基本原理。熵编码的基本思想是,使信源的前后码字之间的关系尽量随机,减少其前后相关性,使其更加接近于信源的熵。基于这种思想,通常情况下用的比较多的熵编码算法有两种,分别是变长编码和算术编码。其中,变长编码的代表算法有哈夫曼编码和自适应算术编码等等。变长编码的特点是,它的运算复杂度和编码效率都比较低,通常用于计算资源比较吃紧,但对压缩的效率要求不是特别高的场合。

    课程介绍

    H.264/AVC是目前业界应用为广泛的视频压缩编码标准,包含了先进而且较为成熟的视频编码技术。本课程将从原理、标准和实现等多个角度,详细讲述了H.264/AVC视频编码标准的整体架构与技术细节,不但讲解了H.264/AVC标准协议文档中的内容,还通过实际的H.264码流分析/解码程序的开发来帮助观众更深入地理解H.264编码标准的原理。
    推荐课程

    信息系统项目管理师自考笔记

    李明 · 724人在学

    python从0到1:期货量化交易系统(CTP实战,高频及合成K线数据

    王先生 · 22112人在学

    手把手搭建Java超市管理系统【附源码】(毕设)

    汤小洋 · 4206人在学

    Java毕设springboot外卖点餐系统 毕业设计毕设源码 使用教

    黄菊华 · 788人在学

    基于SSM酒店管理系统(毕设)

    小尼老师 · 842人在学

    java项目实战之购物商城(java毕业设计)

    Long · 5154人在学

    手把手搭建Java求职招聘系统【附源码】(毕设)

    汤小洋 · 1506人在学

    Python Django 深度学习 小程序

    钟翔 · 2320人在学

    城管局门前三包管理系统+微信小程序(vue+springboot)

    赖国荣 · 598人在学

    Vue+Uni-app(uniapp)入门与实战+赠送仿美团点餐小程序

    李杰 · 3987人在学

    正在试验
    后自动删除环境
    课程实验
    本次实验时间已到期 00:00:00
    课件正在飞速打包中,请耐心等待几秒钟~