深度解析X265和X264的区别,x265为何比x264压缩率高30%到44%

2020-10-17 15:30发布

【1】x265的基本编码单位----CTU=树编码单元:
x265将图像划分为“树编码单元=coding tree units= CTU”,而不是像x264那样的16×16的宏块。根据不同的编码设置,树编码块的尺寸可以被设置为64×64或32×32或16×16。大量的研究都表明更大的树编码块可以提供更高的压缩效率,但是也意味着压制速度会变得巨慢无比。每个树编码块可以被递归分割,利用四叉树结构,分割为32×32、16×16、8×8的子区域,下图就是一个64×64树编码块的分区示例。每个图像进一步被区分为特殊的树编码块组,称之为切割(Slices)和拼贴(Tiles)。编码树单元是x265的基本编码单位,如同H.264的宏块。编码树单元可向下分成编码单元=Coding Unit=CU)、预测单元=Prediction Unit=PU)及转换单元=Transform Unit=TU。


上图表示的是一个边长为64的正方形编码树单元,可以分割成很多边长更小的正方形,比如0是边长为32,1是边长为16,5是边长为8------那我们之前的x264的16x16的宏块大概就相当于1这个小正方形,所以光靠这个图像我们就能看出x265比x264具有更大的编码树单元,因此导致x265比x264具有更高的压缩率,因此x265比x264在压制4K和8K的视频时更具有优势。


【2】x265的CTU和CU,TU以及PU的关系:
x265除了树编码单元之外,还有三种高效率的单元----分别是编码单元CU,预测单元PU和转换单元TU。

CU和PU以及TU的关系如下图,就是包含与被包含的关系。


从上图我们可以看到预测单元PU可以分为八种方式:分别是四种对称模式,和四种非对称模式。对称模式即将小正方形分割成对称图形,而非对称模式将小正方形分割成不对称的图形。


【3】x265的编码单元CU=Coding Unit:


如左图的整个大正方形表示一个树编码单元CTU,这个树编码单元CTU----可以分割成很多个小的编码单元CU(更小的正方形);

如右图是一个四叉树结构,分为四层,最上层代表64x64,最下层表示8x8。举个例子8和16在第二层已经无法再往下层分割,就说明8和16是编码单元了,是属于比较平坦的区域;而3,4,5,6,9,10,11,12要分割到最下层成为数码单元,说明它们是属于细节很丰富的区域。
通过x265压制参数中的:ctu=64 / min-cu-size=8可以做到如上图的分割。CTU=64表示我们的树编码单元最高支持64X64的正方形;而min-cu-size=8表示分割的编码单元最小是8X8的正方形。



【4】x265中的预测单元PU=Prediction Unit:
在转换和量化之前,要对我们分割好的编码单元CU----进行预测---分为帧内预测=intra prediction和帧间预测=inter prediction。
①帧内预测=intra prediction,只能允许用方形切割方法,分别为2Nx2N或NxN两种(其中N=4,8,16,32),如下图:


Square=正方形,motion=运动,partititon=分割,划分;

②帧间预测=inter prediction,一共有八种方法,分为方形与矩形(Square and Rectangular)切割,这种类型的切割方法所产生的区块皆为对称的方式,总共四种分割,分别为2Nx2N、NxN、2NxN及Nx2N--如下图:


Symmetric=对称的;x265压制参数中的rect,表示开启rect,即开启矩形模式分割的帧间预测,rect即Rectangular=矩形,长方形------的简写。开启rect比不开rect压制速度慢很多。
还可以分为非对称式(Asymmetric)切割,分别为2NxnU、NxnD、nLx2N及nRx2N(nX:表示较短的边的位置)--这段话理解不了可以不用管,当成天书即可。这种非对称式的切割对于轮廓或是物件边缘的分割可以达到较好的分割效果,如下图:



Asymmetric=不对称的;x265压制参数中的amp,表示开启amp=非对称式分割的帧间预测,开启amp比关闭amp的压制速度会慢很多。

所以对于x265+10bit压制参数中出现了rect/amp,表示开启矩形分割和非对称分割的帧间预测,压制速度会超级慢,对于这种用生命在压片的压制者我们要对其有敬畏之心!!!如果是你自己压制,不想这么慢,那就关闭rect和amp,即压制参数中的no-rect,no-amp。


从H262发展到HEVC(x265),我们可以看到预测单元PU的发展变化历史,如下图:



从上图可以明显看出HEVC(x265)的预测单元PU拥有24种方式,而x264才7种,所以x265比x264为什么拥有如此大的压缩率,我想不言自明了!!!



【5】x265中的转换单元TU=Transform Unit:

转换单元TU太过于复杂,就用压制参数来简要说明了。
用x265压制参数中的max-tu-size=32 / tu-inter-depth=4 / tu-intra-depth=4来一一详解:
① max-tu-size=32 表示我们的---最大转换单元TU的尺寸是32x32的正方形;

②tu-inter-depth=4,tu表示转换单元,inter表示帧间,depth表示深度,4表示四叉树的分割层数。连起来即表示---帧间转换单元的深度达到4层,类似于我上面讲的四叉树结构,一共四层,这个层数越多,编码越复杂,压制起来的速度就会慢很多。举个例子---tu-inter-depth=4肯定比tu-inter-depth=1压制慢多了;
③tu-intra-depth=4,tu表示转换单元,intra表示帧内,depth表示深度,4表示四叉树的分割层数。连起来即表示---帧内转换单元的深度达到4层,类似于我上面讲的四叉树结构,一共四层,这个层数越多,编码越复杂,压制起来的速度就会慢很多。举个例子---tu-intra-depth=4肯定比tu-intra-depth=1压制慢多了;


附加部分:【6】x265压制参数中的rd=数值的选取:

x265压制参数中的rd取值范围在0-6之间。rd的官方英文解释如下:

Level of RDO in mode decision.The higher the value, the more exhaustive the analysis and the more rate distortion optimization is used. The lower the value the faster the encode, the higher the value the smaller the bitstream (in general). Default 3

翻译:决策模式中的率失真最优化的等级。rd的取值越高,分析越详尽,更多的率失真优化被使用。rd的取值越低,压制的速度就越快,rd的取值越高,总的来说压制之后的码率就越小。x265编码器默认的值是3.

因此我们rd=6最好,让压缩率达到最大,当然rd=6的压制速度那也是相当慢。


总结:有很多童靴都追求小体积的1080p,那么我推荐一套你自己可以用来自压的压制参数,当然你最好有强劲的CPU,比如18核心36线程的CPU,32核心64线程的CPU,否则别去受这个罪:

自压压制参数推荐:

ref=6,me=3,subme=7,me_range=57,bframes=8,b-adapt=2,ctu=64,min-cu-size=8 ,rect/amp,tu-inter-depth=4 , tu-intra-depth=4 , limit-tu=1,rd=6,crf=20,qcomp=0.60,cutree,aq-mode=4,aq_strength=1.00

这些压制参数已经是竭尽所能的提供最大压缩率了,并且crf=20对于x265来说能提供一个不错的画质了。
如果你自己没有强劲的CPU,那你选小体积的1080p压制组作品时,压制参数能接近我上面提供的压制参数越近越好。

赞赏支持