多媒体科技

H264系列十二 H.264概述

2018-09-18  本文已影响61人  合肥黑

参考
【H.264/AVC视频编解码技术详解】一. 视频信息与压缩编码
【H.264/AVC视频编解码技术详解】二. 主流视频编码标准的发展
【H.264/AVC视频编解码技术详解】三. H.264简介
H.264/AVC视频编解码技术详解】四. 常见H.264视频编解码器(X264和JM)及参考软件JM的下载与编解码

一、视频编码标准化组织

从事视频编码算法的标准化组织主要有两个,ITU-T和ISO。

实际上,真正在业界产生较强影响力的标准均是由两个组织合作产生的。比如MPEG-2、H.264/AVC和H.265/HEVC等。不同标准组织制定的视频编码标准的发展如下图所示:


image.png

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

除了上述两个组织之外,其他比较有影响力的标准还有:

二、视频压缩编码的基本技术

视频信息之所以存在大量可以被压缩的空间,是因为其中本身就存在大量的数据冗余。其主要类型有:

针对这些不同类型的冗余信息,在各种视频编码的标准算法中都有不同的技术专门应对,以通过不同的角度提高压缩的比率。

1. 预测编码

预测编码可以用于处理视频中的时间和空间域的冗余。视频处理中的预测编码主要分为两大类:帧内预测和帧间预测。

通常在视频码流中,I帧全部使用帧内编码,P帧/B帧中的数据可能使用帧内或者帧间编码。

2. 变换编码

所谓变换编码是指,将给定的图象变换到另一个数据域如频域上,使得大量的信息能用较少的数据来表示,从而达到压缩的目的

目前主流的视频编码算法均属于有损编码,通过对视频造成有限而可以容忍的损失,获取相对更高的编码效率。而造成信息损失的部分即在于变换量化这一部分。在进行量化之前,首先需要将图像信息从空间域通过变换编码变换至频域,并计算其变换系数供后续的编码。

在视频编码算法中通常使用正交变换进行变换编码,常用的正交变换方法有:离散余弦变换(DCT)离散正弦变换(DST)K-L变换等。

3. 熵编码

视频编码中的熵编码方法主要用于消除视频信息中的统计冗余。由于信源中每一个符号出现的概率并不一致,这就导致使用同样长度的码字表示所有的符号会造成浪费。通过熵编码,针对不同的语法元素分配不同长度的码元,可以有效消除视频信息中由于符号概率导致的冗余。

在视频编码算法中常用的熵编码方法有变长编码和算术编码等,具体来说主要有:

根据不同的语法元素类型指定不同的编码方式。通过这两种熵编码方式达到一种编码效率与运算复杂度之间的平衡。

三、VCL NAL

视频编码中采用的如预测编码、变化量化、熵编码等编码工具主要工作在slice层或以下,这一层通常被称为“视频编码层”(Video Coding Layer, VCL)。

相对的,在slice以上所进行的数据和算法通常称之为“网络抽象层”(Network Abstraction Layer, NAL)。设计定义NAL层的主要意义在于提升H.264格式的视频对网络传输和数据存储的亲和性。

四、档次与级别

为了适应不同的应用场景,H.264也定义了三种不同的档次:

CAVLC支援所有的H.264 profiles,CABAC则不支援Baseline以及Extended profiles。

image.png
五、常见编解码器X264 JM

我们已经知道,H.264是一种视频压缩标准,其只规定了符合标准的码流的格式,以及码流中各个语法元素的解析方法。H.264标准并未规定编码器的实现或流程,这给了不同的厂商或组织在编码实现方面极大的自由度,并产生了一些比较著名的开源H.264编解码器工程。其中H.264编码器中最著名的两个当属JM和X264,这二者都属于H.264编码标准的一种实现形式。

参考JM和x264是什么关系?
再看JM encoder和x264, 自己编码一下,就可以发现,JM encoder实在太慢了,x264则相当快. 为什么呢?因为具体实现的方式不一样,打个简单比方JM encoder就像一个学院派的老师,比较严谨,略带完美主义情结,力求面面俱到, x264更像一个公司的大牛,少去了许多华而不实的东西,奉行实用至上,阉割掉一些看上去很美的东西, 所以编码效率那是相当高啊.

初学H.264时,听别人说研究学术用JM,实际应用用x264. 其实不然,每个人的需求不同,研究学术就要用JM?要看研究的是什么东西,有些人做的是基于H.264的研究,而不是专门研究H.264, 动辄要编码上千帧,如果用JM,那就太慢了. 对某些基于H.264的研究者来说,运动估计是怎么估计出来的一点都不重要,熵编码是如何实现的一点都不重要,重要的是知道在哪个地方提取什么参量. 话说,人各有志,所以,到底用JM还是x264也是不过是人各有所需罢了.

六、H264学习资源汇总

H264官方中文版PDF

Akagi201/h.264-guide.md

雷霄骅[总结]视音频编解码技术零基础学习方法

韦易笑 试简介视频编码技术?
韦易笑 学习视频编码、解码知识需要哪些前置知识?

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

上一篇 下一篇

猜你喜欢

热点阅读