数字视频编码技术原理 pdf(mpeg常用编码标准的编码过程)、本站经过数据分析整理出数字视频编码技术原理 pdf(mpeg常用编码标准的编码过程)相关信息,仅供参考!

谢谢大家的等待。这是多媒体文件格式系列的第三篇文章。我们已经讨论了容器和音频编码。现在我们将看到最复杂的视频编码。人们一直在努力提高视频编码的效率,使其在尽可能小的体积内提供最好的画质,从而满足人们对视频传输和存储的需求。与前两篇文章介绍的容器和音频编码不同,视频编码有着清晰的发展脉络,比各种各样、不统一的音频编码更容易理顺。目前国际上通行的视频编码标准基本都是由MPEG(运动图像专家组)和ITU-T(国际电信联盟电信标准化部)等组织制定的,也有一些零星的编码,可能会短时间占据主流地位,但最终会让位于国际通行的标准。

国际上主要的编码标准有ITU-T组织的H.26x系列视频编码和MPEG制定的一些编码标准。需要注意的是,同一个标准在不同的组织中可能有不同的叫法,比如AVC(高级视频编码)就是最典型的一个,你可能更熟悉它的另一个叫法,——H.264 AVC是MPEG在标准中给它起的叫法。MPEG组织隶属于国际标准化组织(ISO)和国际电工委员会(IEC),所以它在ISO标准中的正式名称是“MPEG-4 Part 10,Advanced Video Coding”。这种情况在H.26x系列码中比较常见,下面会有说明。

在这个主语境下,基本涵盖了近半个世纪以来视频编码技术的发展。我们将主要沿着H.26x和MPEG的主脉络,为读者简单梳理一个视频编码的发展历程。

为什么我们需要对视频进行压缩和编码?很简单,就是减少视频占用的容量。

数字视频本质上是一帧一帧的连续图像。虽然一个图像的大小不大,但每秒至少要有24个图像(一般情况下),累积起来会占用非常大的空间。我们没有那么多地方存储原始数据,只有一条路可走,所以压缩吧。视频的编码过程就是压缩过程,但是和音频一样,传统的数据压缩算法中视频文件中基本没有冗余信息,所以人们有必要开发一种针对视频的压缩算法,去除实际的冗余信息,从而减少其数据量,降低占用容量。所以现在的视频编码基本上都是有损的,也就是说编码后的视频会损失画质。

前蓝光时代视频编码的发展之路我们先来看看视频编码是如何按照时间顺序沿着国际标准一步步“现代化”的。

在模拟电视和电影电影时代,我们看到的所有内容都是由模拟信号还原的。然而,随着人们需求的不断提高以及计算机和网络的蓬勃发展,我们需要新的能够承载视频内容的数字编码,以支持视频内容在互联网上的传输或存储在数字存储设备中。

在20世纪70年代末和80年代初,人们开发了许多新的用于多媒体内容(如图像)的压缩算法。此时发展数字视频编码的条件基本成熟,最早发展实际编码的是VideoCodingExpertsGroup,后来在数字视频编码领域发挥了主导作用。它们是ITU-T(国际电信联盟电信标准化组织),当时的名称是CCITT。这个编码命名为H.120,诞生于1984年。它是早期带有实验性质的编码,主要基于差分脉码调制,用于保存电视内容,但还没有大规模应用。

H.261:引入各种特性,奠定现代视频编码基础在制定完高120过后几年,VCEG并没有停止他们在视频编码上面的研究。此时很多跨国公司已经使用网络进行视频会议的需求了,在互联网带宽尚不充裕的年代里,人们需要新的视频编码来实现流畅而优质的实时视频通信,H.261就应运而生了。

261与首个数字视频编码标准高120并没有直接的继承关系,它可以说是完全另起炉灶的一种编码。在针对图像的压缩算法上,H.261使用了我们现在比较熟悉的离散余弦变换(DCT)算法,它在后来的联合图像专家组编码中起主要作用。但不止于此,它引入了一系列针对视频的特性,奠定了现代视频编码的基础,其中主要有宏块(宏块)和基于宏块的运动补偿(运动补偿).

宏块与基于运动补偿的帧间预测我们知道,视频是由一帧一帧的图像组成的组合,一般情况下一秒钟的视频中会包含24、25、30、60或更多张图片,它们按照一定的时间间隔播放出来,基于视觉残留原理形成了流畅、会动的画面。在连续的几帧之间,实际上存在着大量重复的画面,比如说下面这个例子:

一个白色台球在绿色桌面上面运动

用小球运动的方向和距离来描述图像的变化

如果是以传统的思路对每一帧图像做压缩的话,显然整个视频在压缩过后仍存在大量的冗余。那么怎么办呢?261标准引入了宏块的思维,它将整个画面切分为许多小块,然后再引入基于运动补偿的帧间预测——画面的大部分都是不动的,那么我们将不动部分的区块沿用之前的压缩结果,动的部分用运动方向加距离这样一个矢量来描述不就可以节省出大量的存储空间了吗?

离散余弦变换;远曲小管;双离合自动变速器算法将8x8个像素分成一个块

离散余弦变换;远曲小管;双离合自动变速器算法起源于上世纪70年代,到了80年代中后期,有研究者开始将其用于图像压缩。这种算法可以将图像从空间域转换到频率域,然后做量化——减少人眼敏感程度较低的高频信息,保留绝大部分低频信息,从而减少图像的体积。最后再用高效的数据编码方式将处理过后的数据进一步压缩,这里使用了之字形扫描和可变长编码。

注:图像的高频部分存有很多细节信息,而低频部分则存有轮廓等覆盖范围较大的信息。

亮度通道做离散余弦变换;远曲小管;双离合自动变速器变换后的图像,可以看到上方颜色连续部分非常平坦,而下方则拥有诸多细节

在261及之后基于261框架的视频编码中,DCT算法主要针对的是关键帧的压缩,所谓关键帧,就是在运动补偿中作为基准参考的一帧。打个比方,就像闪光动画中的关键帧一样,它定义了一个起点,后续的几帧都是基于这个关键帧演算出来的。因为它只做帧内压缩,不涉及其他帧,又被称为帧内(帧内编码帧),简称我帧。

小结:创立混合编码框架,有里程碑意义261设计的目标是编码出比特率在64~2048kbps范围内的视频,以用于实时的视频电话等应用。它首次确立了帧内预测与帧间预测同时使用的编码框架,在消除每一帧本身存有的冗余外,消除了帧与帧之间的冗余信息,从而大幅度降低了码率,成为了实际可用性相当高的一种视频编码。而它的编码框架也影响到了之后几乎所有的视频编码,尤其是H.26x和活动图像专家组国际标准家族。

需要说明的是,H.261只是规定了该如何解码,只需要编码器最终产生的视频流可以被所有261解码器顺利解码即可。至于你前面怎么编码的,具体用的算法如何不同都没有关系,这点适用于之后几乎所有的视频编码。

面对高比特率、标清、高清,从20世纪90年代开始,数字电视系统逐渐普及,带来了更大的传输带宽。与此同时,DVD标准也即将尘埃落定。它提供了比CD大几倍的容量,可以携带更清晰的图片。因此,MPEG-2将目标比特率范围从MPEG-1时代的1~2Mbps提高到了6~10Mbps,即使在高清时代,也能以20Mbps左右的比特率传输高清画面。

总结:虽然MPEG-2,这个曾经最常见的视频编码,并没有增加太多的新特性,实际上也没有提高压缩率,但是它被选为DVD-Video、数字电视、DV等一系列应用的标准编码。并成功成为世界性的视频编码格式。今天,它仍然广泛应用于数字电视和其他系统。

H.263:FLV和3GP是好伙伴。最初的H.261和MPEG-1都偏向于低比特率应用。随着互联网和通信技术的快速发展,人们对网络视频的需求越来越大,在低比特率下追求更高质量的视频成为新的目标。作为通信行业的主要标准制定者,ITU-T于1995年推出了H.261的直接继任者3354h。

H.263在1995年推出的第一版中有几个版本,它主要引入了MPEG-1中应用的亚像素精度运动补偿,也支持1/2像素的精度。此外,改进了DCT算法,增加了新的运动矢量中值预测方法,与H.261相比编码效率明显提高

需要注意的是,以上功能只是它的基础部分。只需要实现这些新的东西来支持H.263,然而,它也提供了一系列额外的功能来增强压缩率。例如,MPEG-1中的新B帧变成了H.263中的附加PB帧。

H.263是一个不断升级的代码。在第一个版本之后还有H.263和H.263两个官方升级版本。在H.263中,重点提高了压缩比,整体比第一版提高了15~25%。同时,在2001年的修订中,还引入了“侧面”的概念,将各种特征分为几个层次。完全支持某个级别的特性意味着支持这个概要文件。例如,第一版H.263的基本部分是它的“基线”轮廓。

H.263已经广泛应用于互联网和通信行业。它曾经活跃在各种视频网站上,和Flash播放器一起支撑着互联网上的在线视频。在通信行业,它被3GPP采用为各种通信标准中的标准视频编码,例如MMS——,即MMS。

此外,它还被MPEG组织作为MPEG-4 Part 2的基础。

MPEG-4第2部分:有许多特性和许多实现。继MPEG-2之后,MPEG组织有了新的目标:——开发一个具有更高压缩率的编码框架,但同时保留了对低复杂度的支持。1998年,MPEG-4标准正式诞生,其第二部分定义了新的视觉编码体系。是的,不仅仅是针对视频应用,广义上也是针对视觉的,所以也叫MPEG-4“视觉”。

它的核心设计实际上类似于H.263,但它包含了更多关于编码效率的增强。它定义了各种不同复杂度的概要文件,从最基本的简单概要文件到非常复杂的简单工作室概要文件。前者不支持B帧,后者甚至支持4K分辨率、12位、4:4:4采样的编码。

虽然MPEG-4 Visual是一个野心勃勃的编码,但却一直受到业界的冷遇和诟病。一个是它的压缩率相比MPEG-2并没有明显提高,而且因为授权和专利费的原因,很多厂商选择自己实现一套兼容MP EG-4 Visual的编码,而不是直接采用标准。其中有两个经典兄弟DivX和Xvid,微软也将其作为Windows Media Video的基础,一点一点升级到WMV9。

其他的编码时间已经到了21世纪。高清视频和高清电视已经普及,新的应用带来了更高的需求,迫使行业开始研究新的更有效的视频编码。我们熟悉的AVC即将出现。不过在介绍之前,我们先来看看其他几个应用比较多的视频编码。

MJPEG想必大家都不陌生。Mjpeg和jpeg有着千丝万缕的关系。视频不是一帧一帧的吗?每一帧都是JPEG压缩然后合成的,不是吗?是的,MJPEG是JPEG图像的组合,每一帧都包含完整的图像信息。正因为如此,它的压缩率不高,但实现简单,使得很多数码相机厂商将其作为相机的视频编码。事实上,它已经被广泛使用。

RealMedia对于中国人来说,RealMedia绝对是一个有情怀的词。他们的RM系列码在十几年前就已经在国内网络上有了相当大的覆盖。其实它的实现基本上是基于同时期的国际标准,比如高清,压缩比,超越同时期DivX的rv40就是参考H.264形成的

RM最大的问题是支持范围不广。它需要插件才能在浏览器中播放RM,基于Flash播放器的视频网站的兴起逐渐缩小了它的使用范围。最后在正版H.264的冲击下,RM慢慢消失了。

WMV微软有自己的客厅梦。除了Xbox,他们还希望PC进入客厅。当然,这与Windows Media视频无关。微软基于MPEG-4第2部分创建了一系列新代码。一开始都叫微软MPEG-4或者微软ISO MPEG-4,但是很快,微软就把它们放进了Windows Media家族,第一个版本是WMV7。

接下来,微软继续在WMV7中添加自己的东西,以便适应更高分辨率的视频。最后,他们给WMV9添加了一个新的概要文件,产生了一个新的VC-1代码。

DVD普及后,高清视频时代即将到来。很快发现,即使是双层DVD的容量也不够1080p的视频。不久,大公司开发了两种以蓝光为激光束的新型光盘,一种是DVD Forum领导的HD DVD,另一种是Sony领导的蓝光。两种光盘格式的战争,还是按“不”吧。这里要说的是,伴随着新的光盘格式出现了新的视频编码标准——VC-1和H.264。

AVC/h . 264:HD DVD和蓝光的标准中支持三种视频编码,一种是老的MPEG-2,一种是微软推出的VC-1,最后一种是全新的AVC。虽然它的名字很简单,但其实意义重大。它是MPEG和ITU-T联合推出的新一代国际标准,在MPEG中被标准化为MPEG-4 Part 10 Advanced Video Codec,在ITU-R中被标准化为H.264。

H.264这个名字我想大家并不熟悉但正是这种我们每天都能接触到的视频编码格式,引发了十几年前的软解危机,击倒了当时很多主流的CPU,也让三家ANI公司都在产品中加入了辅助解码的硬件加速单元。不过这和我们的主题无关,暂时请按无表。这里我想说的是H.264的力量它能用什么手段实现编码质量的飞跃,让它垄断市场十几年而没有衰退的迹象。

总结起来有以下几点:更灵活的宏块划分方法,更多的参考帧,更先进的帧内预测和压缩比更高的数据压缩算法。

在之前的标准中,宏块划分的方法是固定的,以16x16像素为一个宏块。但在新时代,这种粗放的划分方式不够灵活,所以H.264同时允许16x8、8x16、8x8、8x4、4x8、4x4的划分方式,精细度更高。同时,H.264将亚像素运动补偿的描述从1/2像素精度细化到1/4。这样新的编码在帧间预测上有更高的准确率,但实际数据量不会增加太多,提高了压缩率。

更多参考帧在以前的标准中,每个B或P帧的参考帧数量有限且过少。H.264一举将限制放宽到16帧。在大多数应用场景下,每帧的参考帧数至少为4~5,而在之前的标准中,P帧的参考帧数仅为1,而B帧的参考帧数为2。这个功能可以提高大部分场景的画质或者降低音量。

包含在每个宏块中的预测模式信息的更高级的帧内压缩

H.264还引入了一种新的I帧压缩方法。一般来说,对于一幅图像中的某个像素,它与相邻像素之间的色差并不大,所以我们可以利用这个特性来进一步缩小单帧图像的大小。我们如何使用它?H.264将单个宏块中像素的颜色变化规律标准化为一个公式。编码的时候,在这里写应用哪个公式就行了。当然我这里的说法比较简单,完整的帧内预测还是很复杂的。H.264为4x4宏块指定了九种预测模式,为16x16亮度平面宏块指定了四种可用模式。单个图像的数据量大大减少,同时保持高图像质量。

差分图像加上预测信息可以恢复原始图像。

在CABAC编码的最后阶段,数据无损压缩时,H.264除了支持H.261中已有的VLC编码外,还增加了两种新的无损数据压缩编码,一种是VLC ——CAVLC的升级版,另一种是更复杂的CABAC(基于上下文的自适应二进制算术编码)。

CABAC也是一种熵编码。其主要原理是用长编码代替低频数据,用短编码代替高频数据。但是,它引入了更多的统计优化,并具有动态适应性。虽然解码时需要更多的计算,但它比CAVLC能节省更多的数据,通常节省10%。

总结:巨大的变化带来巨大的成功。除了以上几点,H.264还有很多新特性。与MPEG-4视频不同,这些新功能有效地帮助H.264在容量节省方面取得了显著进展。在这里,我给你举一个强烈对比的例子。DVD视频标准的视频采用MPEG-2编码,比特率约为9Mbps,但分辨率只有720x480。而且在某些场景中,我们可以清楚地看到有损压缩带来的伤害;而同样的码率,放在H.264上,已经可以承载质量不错的1080p视频了。

除了编码效率的显著提升,H.264还根据网络传输的特点优化了编码组织方式,使其更抗丢包和干扰。在各种手段下,成为了最近十年主导视频领域的编码,也可以说成为了HTML 5中事实上的标准。现在,从手机到相机,从流媒体视频到蓝光光盘,很难看到一台不支持H.264编码的设备。应用范围广,效率强。即使现在出现了新的编码,它仍然具有强大的生命力和不可替代性。可以预测,h。

VC-1:失败的挑战者进入高清时代后,微软跟风升级了WMV9,增加了高清视频的新功能,使其可以胜任1080p级别的高清视频。新代码是VC-1。与H.264相比,VC-1的整体复杂度更低,因此在软解决方案上对CPU更友好。其实VC-1已经通过了国际组织SMPTE的标准化。

VC-1和HD DVD有一定的绑定关系,在蓝光战争初期也是这样推广的。然而,随着HD DVD阵营承认失败,VC-1消失了,很难再看到它。

在UHD和流媒体时代,新编码H.264很强大,但在超清时代就不够用了。随着视频分辨率的跨越式提升,H.264表现出疲态,在处理4K视频时无法提供良好的压缩比。显然,人们需要一个新的代码来继承它的地位,它的直接继承者——HEVC经过多年的研究终于在2013年获得通过。

HEVC/H.265/MPEG-H Part 2: HEVC,视频编码的接班人,代表高效视频编码。同样,它是MPEG和ITU-T共同制定的国际标准编码,包含在MPEG-H规范中,是第二部分(Part 2)。在ITU-T中,它是H.26x家族的新成员,也就是H.265。

HEVC主要是为高清和超清分辨率视频开发的。相比上一代AVC,在低码率下拥有更好的画质表现,同时在面对高分辨率视频时可以提供超高的压缩比,帮助4K视频打包成蓝光光盘。

取代宏块的编码树单元HEVC引入了编码树单元的新概念,取代了在视频编码中已经存在多年的宏块概念。它的单块面积要大得多,达到64x64,但仍然保留了可变大小和可分性,最小单位为16x16。单个编码树包含小的编码单元,可以用四叉树的形式表示,可以快速确定其中的单元是否可以细分。内部编码单元最小可以划分到88,精细度还是很高的。

单个编码单元也可以不断切割分类,可以成为预测单元,可以表示该单元的预测形式,是帧内预测还是帧间预测甚至是完全没有变化可以跳过的单元;也可以称为变换单元,可以进行DCT变换或量化。

编码树单元的引入使得HEVC可以使用大面积单元来提高编码效率,并且还可以在需要时进行细化,以保留更精细的细节。所谓粗的地方粗,细的地方细。在HEVC的帮助下,代码流变得更加高效。

更高效的DCT由于块的最大面积大,DCT算法也需要跟上。HEVC将DCT算法的最大尺寸扩展到32x32,对于图像的平坦部分有更高的压缩率。

33个帧内预测方向还记得H.264针对4x4宏块推出了9个帧内预测方向吗?HEVC直接将这个数字增加到了33,不仅实现了更高的效率,在静止图像抑制上也实现了更高的精度,这也是HEV成功进入静止图像编码市场的一大利器。虽然编码难度变高了,但是只要用硬件编码器就没有那么多问题了。

总结:高效编码,却被高额专利费所困。与AVC相比,HEVC在高分辨率下的编码效率大大提高。例如,由H.264编码的相同4K视频的大小可能是由HEVC编码的两倍。这个巨大的进步也使得蓝光直接将其作为标准编码并推出UHD BD,其在单帧图像压缩方面的提升也使得其优于JPEG,所以我们看到在移动端,越来越多的设备选择其作为默认的视频和照片输出编码。

然而,与AVC相比,HEVC的推广速度要慢得多。一个是它的编解码难度远高于H.264不过这一点已经通过各种硬件编码器和软件优化逐渐消除。目前常见的设备基本都支持HEVC的硬件编解码;二是HEVC的高额专利费,它不是一种免费的编码格式。虽然个人使用完全没有问题,但是这种高昂的专利费足以让想要兼容它的厂商望而却步,尤其是那些崇尚自由开放互联网市场的厂商。所以我们可以看到很多厂商都选择了免费开放的VPx系列代码,以及该系列的继任者,——AV1。

VPx系列和AV1:以免费为卖点的VPx系列编码其实由来已久。它的前身是On2 Technologies的TrueMotion视频编码系列,在TrueMotion VP8编码开发时被谷歌收购。在Google的介入下,VP8从原来的专有技术变成了开放技术,而且是BSD许可下的开源。

从技术角度来看,VP8采用的技术与H.264类似虽然在我们看到的宣传中,VP8比H.264有更好的压缩效率,但在实际应用中,由于设计上的一些缺陷,其性能不如H.264。最后虽然进入了Web标准,但是没有人使用,但是从其帧内压缩技术中提取出来的WebP受到了欢迎。

VP8的表现不尽如人意,谷歌很快推出了继任者——VP9。这一次,他们参考了HEVC,设计目标也是高分辨率的高效编码。VP9中的一些设计受到了HEVC的影响,比如同样最大尺寸为64x64的超级块。VP9实现的最终结果是,与VP8相比,它的效率提高了50%。看起来可以和HEVC竞争,但是VP8也遇到了类似的问题,所以无法普及。VP9的应用范围其实仅限于谷歌自己的Youtube,只能说是缺乏实际应用场景。

但很快,一些制造商意识到了HEVC高额专利费的弊端,他们决定建立一个开放联盟来推广开放和免费的媒体编码标准。这个联盟是Alliance forOpenMedia,创始成员是亚马逊、思科、谷歌、英特尔、微软、Mozilla和网飞,后来又有苹果、ARM、三星、英伟达和AMD加入。

谷歌贡献了仍在开发中的VP10,作为联盟新编码的基础。很快,名为AV1的编码诞生了。在脸书的测试中,它比VP9和H.264分别提高了34%和46.2%。这一次,它似乎真的达到了HEVC的水平。

这两年AV1才真正开始得到厂商的重视。例如,网飞最近决定使用AV1作为其主要编码,英特尔也推出了开源和免费的SVT-AV1编码器,充分利用了自己的AVX-512指令集。但是,这个联盟还是相当松散的。比如联盟成员苹果,目前对AV1无动于衷,所有设备都转向了HEVC。

然而,从网飞决定使用AV1作为主要编码来看,AV1的免费和开放的特性是相当有吸引力的。但是,目前缺乏对AV1的硬件支持。不仅PC不解码AV1硬件,更多的移动设备也不适应。不久前宣布是第一款加入AV1硬件解码的SoC。与拥有完整硬件支持的HEVC相比,这将是AV1推广的一个门槛。

未来的编码:VVC目前,MPEG和VCEG已经开始研究HEVC的接班人。据我们所知,它暂时被命名为通用视频编码(Versatile Video Coding),并将成为H.266。它是面向未来的视频编码,将支持从4K到16K分辨率和360视频的视频压缩。它的目标是在HEVC的基础上加倍编码效率。

它将来可能增加的新特性是:更复杂的编码单元结构;更大和更详细的区块划分;全球框架参考;更多的帧内预测模式(目前有65种)…与HEVC相比,VVC的复杂度将直接高出一个维度。但是国际标准现在面临着以AV1为代表的开放标准的挑战,很难说他们会不会取消一些功能,从而提前它的正式发布时间。

总结:随着时代的发展,显示器和电视的分辨率越来越高,网络带宽越来越大,设备处理多媒体内容的能力越来越强,视频编码也随着时代的变化一直在不断进步。然而,自H.261以来,其框架并未发生显著变化,只是每一次新的编码都利用了半导体性能的增长,在这一既定框架下添加了新的更高效的算法。与没有取得明显进步的音频编码相比,新的视频编码在带宽和容量方面的节省要明显得多,甚至新的编码在图像质量性能方面也更有优势。在不久的将来,10位色深和HDR将会普及,从根本上取代作为上个世纪标准的SDR内容,为我们带来更加精彩的视觉体验。HEVC等编码已经有所准备,未来他们的应用场景甚至会突破视频领域。以苹果新设备为例,HEVC实际上已经成为其标准编码格式,在图像和视频领域很流行。

此外,根据最新报告,视频流量占当前互联网流量的大头。随着流媒体不断渗透到日常生活中,用于视频传输的流量只会更大,而互联网的整体带宽不可能无限提升。对于内容提供商来说,流量成本也是相当大的一部分开销,压缩效率更好的编码自然会受到他们的青睐。其实编码的不断升级是双赢的,用户和内容提供商都可以从中受益。

由于时间和作者个人能力的限制,本文也有很多不足之处,但我还是想通过对这些代码的概述,让更多的人了解正确的编码知识。如果能起到吸引更多人对编码感兴趣的作用,开始自己的研究,那是最好不过的事情了。

更多关于数字视频编码技术原理 pdf(mpeg常用编码标准的编码过程)的请关注本站。