
H.264/AVC视频编解码技术详解
hai0808
这个作者很懒,什么都没留下…
展开
-
十一、H.264的Slice Header解析
GitHub代码地址:点击这里H.264中的条带(Slice)1. Slice的概念我们已经知道,整个H.264的码流结构可以分为两层:网络抽象层NAL和视频编码层VCL。在NAL层,H.264的码流表示为一系列的NAL Units,不同的NAL Units中包含不同类型的语法元素。前面两篇中所解析的序列参数集SPS和图像参数集PPS就是其中重要的两个部分,其中包含了控制解转载 2017-05-17 22:22:21 · 6062 阅读 · 1 评论 -
十、图像参数集Picture Paramater Set(PPS)解析
GitHub代码地址:点击这里除了序列参数集SPS之外,H.264中另一重要的参数集合为图像参数集Picture Paramater Set(PPS)。通常情况下,PPS类似于SPS,在H.264的裸码流中单独保存在一个NAL Unit中,只是PPS NAL Unit的nal_unit_type值为8;而在封装格式中,PPS通常与SPS一起,保存在视频文件的文件头中。1. 图像参数转载 2017-05-17 22:18:58 · 1060 阅读 · 0 评论 -
九、序列参数集Sequence Paramater Set(SPS)解析
在H.264标准协议中规定了多种不同的NAL Unit类型,其中类型7表示该NAL Unit内保存的数据为Sequence Paramater Set。在H.264的各种语法元素中,SPS中的信息至关重要。如果其中的数据丢失或出现错误,那么解码过程很可能会失败。SPS及后续将要讲述的图像参数集PPS在某些平台的视频处理框架(比如iOS的VideoToolBox等)还通常作为解码器实例的初始化信息使转载 2017-05-17 22:17:52 · 1827 阅读 · 0 评论 -
八、H.264中的熵编码基本方法、指数哥伦布编码
1. H.264中的熵编码基本方法在成功从NAL Unit中获取到语法元素的码流之后,接下来就是对语法元素的码流进行解析。根据我们在前面的博文中所讲述的H.264编码框架图,经过预测、变换量化等步骤后得到的H.264语法元素将通过熵编码器压缩为符合标准的H.264码流。因此,为了还原各个语法元素,必须对码流使用熵编码的解码器进行解码。在H.264的标准协议中,不同的语法元素指定了不转载 2017-05-17 22:17:15 · 1790 阅读 · 0 评论 -
七、 熵编码算法(1)——基础知识
1. 熵编码概念“熵”这一概念原本来自于化学和热力学,用于度量能量退化的指标,即熵越高,物体或系统的做功能力越低。后来香农将这一概念引入到信息论中,用于表示消息的平均信息量。信源的熵通常可以表示信源所发出信息的不确定性,即越是随机的、前后不相关的信息,其熵越高。在信息论中,香农提出了信源编码定理。该定理说明了香农熵与信源符号概率之间的关系,说明信息的熵为信源无损编码后的平均码字长度转载 2017-05-17 22:16:36 · 2744 阅读 · 0 评论 -
五. H.264的码流封装格式
H.264的语法元素进行编码后,生成的输出数据都封装为NAL Unit进行传递,多个NAL Unit的数据组合在一起形成总的输出码流。对于不同的应用场景,NAL规定了一种通用的格式适应不同的传输封装类型。通常NAL Unit的传输格式分两大类:字节流格式和RTP包格式;字节流格式:字节流格式在H.264标准的协议文档中在Annex B中规定,是大多数编码器实现的默认输出格式。字节流格式转载 2017-05-17 22:14:24 · 1382 阅读 · 0 评论 -
一. 视频信息与压缩编码
一、人与世界的交互从远古时代人类文明诞生之日起,人类就在人类就在不断为适应环境、改造环境而艰苦斗争。其中最为基础的前提就是利用感官对外界信息的获取。利用各种感官,人类可以与世界环境进行多种不同的信息交互,例如:嗅觉:识别各种气味,辨别环境变化和食物、饮水的质量等;听觉:识别同类的联络信息和天敌等危险信号等味觉:挑选最适宜的食物触觉:制作与使用工具时非常重要另转载 2017-05-17 22:09:21 · 872 阅读 · 0 评论 -
二. 主流视频编码标准的发展
http://www.voidcn.com/blog/shaqoneal/article/p-6123909.html一. 主流视频编码标准的发展长期以来,视频编码标准主要由两个国际组织负责制定:国际电信联盟ITU-T和国际标准化组织ISO。目前影响力最强的视频编码标准基本均出自这两个组织:除了上述两个组织之外,其他比较有影响力的标准还有:转载 2017-05-17 22:11:38 · 3249 阅读 · 0 评论 -
三. H.264简介
一. H.264视频编码标准H.264视频编码标准是ITU-T与MPEG合作产生的又一巨大成果,自颁布之日起就在业界产生了巨大影响。严格地讲,H.264标准是属于MPEG-4家族的一部分,即MPEG-4系列文档ISO-14496的第10部分,因此又称作MPEG-4/AVC。同MPEG-4重点考虑的灵活性和交互性不同,H.264着重强调更高的编码压缩率和传输可靠性,在数字电视广播、实时视频通转载 2017-05-17 22:12:43 · 503 阅读 · 0 评论 -
四. 常见H.264视频编解码器(X264和JM)及参考软件JM的下载与编解码
常见H.264视频编解码器(X264和JM)及参考软件JM的下载与编解码我们已经知道,H.264是一种视频压缩标准,其只规定了符合标准的码流的格式,以及码流中各个语法元素的解析方法。H.264标准并未规定编码器的实现或流程,这给了不同的厂商或组织在编码实现方面极大的自由度,并产生了一些比较著名的开源H.264编解码器工程。其中H.264编码器中最著名的两个当属JM和X264,这二者都属于H转载 2017-05-17 22:13:38 · 10980 阅读 · 0 评论 -
十四、H.264的变换编码(一)——矩阵运算与正交变换基本概念
GitHub代码地址:点击这里1. 矩阵的定义矩阵,英文称为”Matrix”,是数学中一个非常重要的概念。从形式上看,矩阵可以用一个m行n列的数组成的表格表示。如下图可表示一个4行4列的方形矩阵:在实际应用中,矩阵可以在多个技术领域发挥重要作用,如音视频压缩编码、机器学习、人工智能等领域。2. 矩阵的运算矩阵必须在计算中才能与其他转载 2017-05-17 22:29:08 · 1305 阅读 · 0 评论 -
十三、熵编码算法(4):H.264使用CAVLC解析宏块的残差数据
GitHub代码地址:点击这里1. H.264的CAVLC解析宏块残差数据的流程在H.264的解码器在解析宏块的残差数据时,其流程类似于上文提到的CAVLC编码的逆过程。在解析一个宏块残差的时候,首先解析的是残差矩阵的非零系数以及拖尾系数的个数numCoeff和trailingOnes。随后是每一个拖尾系数的符号trailingSigns。而后是每一个非拖尾非零系数level的转载 2017-05-17 22:27:35 · 816 阅读 · 0 评论 -
十三、熵编码算法(3):CAVLC原理
GitHub代码地址:点击这里上下文自适应的变长编码(Context-based Adaptive Variable Length Coding, CAVLC)1. 引言在前述的几章节的博文/视频中,我们已经了解到熵编码是利用信息的统计冗余进行数据压缩的无损编码方法,并且已经讨论过了熵编码的基本原理、H.264中使用的语法元素解析算法“指数哥伦布编码”的算法与实践:转载 2017-05-17 22:24:49 · 2904 阅读 · 0 评论 -
十二、解析H.264码流的宏块结构(上)
GitHub代码地址:点击这里H.264中Slice Body——宏块结构(Macroblock)的解析1.Slice Data结构的定义在已经实现了一个slice的header部分之后,下面的工作将是研究如何解析一个slice的主体,即Slice Body部分。一个Slice的body部分主要是一个个的宏块结构Macroblock组成,此外还存在一些辅助的信息。标准文档中转载 2017-05-17 22:23:14 · 2265 阅读 · 0 评论 -
六. NAL Unit格式解析
GitHub代码地址:点击这里在有序字节流格式的H.264码流中,我们可以根据前缀起始码0x 00 00 01或0x 00 00 01获取到一个完整的NAL Unit所包含的的字节数据。H.264码流中的每一个NAL Unit的作用并不是相同的,而是根据不同的类型起不同的作用。因此将H.264的码流解析为NAL Unit之后,下一步将是对NAL Unit中的数据进行解析。1. NA转载 2017-05-17 22:15:29 · 3043 阅读 · 0 评论