VCB-Studio教程10 x265 v2.9参数设置
本教程旨在讲述x265参数设计的技巧。编码器版本适用x265 v2.9+8, 10bit版本。
1. 参数分类
一般来说,编码器都有document来描述有哪些参数供你设置,这些参数大概是做什么的。测试的第一步就是先阅读doc,根据你的经验,把参数分为这三类:
编码规范/specification, 这类参数一般是规定编码一些格式规范、编码器工作的。比如x264/x265中--profile --level --matrix, --display-window --sar等等。这些参数一般无需测试,该怎样就怎样。一般这些参数的调整也不会显著影响编码速度和编码画质。
取舍性/trade off, 这类参数一般是时间换画质的,比如x264/x265 中 --ref --bframes --me --subme --merange --rect --amp等。这些参数对画质的影响往往是通用性的,不随片源类型、码率高低变化太多。
码率控制/rate control, 这类参数决定码率的分配,分配的多少,怎么个分配法。比如x264/x2
65中 --crf --qcomp --aq --psy等等。这些参数对画质的影响往往体现在目视效果上,跑分并不能很好的体现,且不同类型片源、码率表现很不一样。
本教程将从这三个分类的角度,讲述x265一些参数的设置技巧。

2. 编码规范/specification
spec相关的参数一般没多少需要手动指定的,一般只有这几个:
--depth 10/-D 10,表示输出精度,10就是10bit。如果已经使用了对应精度的x265,这一项无需指定。
--no-open-gop,关闭OpenGOP,屏蔽一些设备上不能正确解码opengop的问题。
--keyint 360 --min-keyint 1,GOP区间长度。注意HEVC解码压力相比AVC较大,GOP区间不宜设置太长。
--colormatrix bt709 --range limited, YUV转RGB相关。
--deblock -1:-1,类似x264.

茴香苗饺子3. 取舍性/trade off
--preset slower,preset是官方给你准备的“一键设置”,因此当你不是很了解x265参数的时候,建议使用。
崔永元怎么了--ctu 32,表示最大允许32x32的transform unit。虽然x265允许64x64,但是过大的TU会增加平面的涂抹,增加运算量,降低多线程优化可能,总体来说在<=1080p的编码下弊大于利。因此限制一下比较好。
--qg-size 8, 表示qp值调整的最低单位是8x8coding unit。这个数字越低,x265调整一帧内qp值的灵活度越高。编码表现来看,固定其他参数(crf模式下),这个值越低,画质越好,码率也越高。微调crf至同档码率,我们依旧认为--qg-size 8 的效果是最好的。
--me 3,使用star search。star search综合来说好于umh,但是不要试图用full。因为x265目前还没有对full做优化,太慢了。
--subme 4,最低建议3(preset = slow时候自动设置为3)。subme=3开始在ME过程中考虑chroma residual
--me-range 38,官方建议57,事实证明有点大。1080p给38左右就绰绰有余了。
--b-intra,允许B帧中出现Intra Block。动画建议
--no-rect/--no-amp。 rect和amp是HEVC规范中对block的创新。一般来说block都是正方形,比如32x32,8x8之类的。rect启用1x2/2x1类型的,比如允许32x16的block,8x16的block;amp允许1x4/3x4/4x1/4x3类型的block,比如8x32,12x16之类的。amp的启用必须启用rect,反之则不需要。--no-rect表示不启用rect(也顺道相当于--no-amp)。通常来说,<=1080p下,rect基本上没什么作用,amp是几乎完全没作用,但是这俩都是速度黑洞。因此从效率角度建议关闭,或者至少关闭amp
如果--rect 开启,建议开启--limit-tu 4来限制x265对分块的(可能)无效尝试。
--ref 4。ref的意义和x264中相似;不过实测ref增加在x265中作用不明显。建议不超过6
--weightb。允许b帧的加权预测,在一些渐变场景比较有用。
--bframes 8。b帧并不是越高越好,建议给6~109月14是什么情人节左右。
--rc-lookahead 60。编码时候往前看多少帧来规划Coding Unit Tree(CUTree,相当于MBTree)一般设置为60~80比较合理;帧率越高的片源适合给的越高。
--rd 3Rate distortion optimization的模式,越高,计算度越复杂。3是一个比较平衡的选择。目前5是实际最高选择。根据官方doc,--rd 3和--rd 4相同,--rd 5和--rd 6相同。

4. 码率控制/rate control
码率控制这块是x265调节的重中之重。x265的威力只有配合高度定制化的参数才能真正显露出来。
--no-sao。 SAO官方名称叫“Sample Adatpive Offset”,然而我一般称为“Smoothing All Objects”。sao的启用虽然可以减少DCT ringing等欠码瑕疵,但是代价是极其暴力的涂抹效果。除非是极低码率编码,否则一般不推荐开启SAO
-
-crf 18.0。 --crf依旧是调节体积/画质最有效,最直接的参数。默认的28.0大概是为了强调x265在低码率的优势。日常编码怎么着23以上吧。对于动漫的高画质编码,建议至少18.0起。
--aq-mode 2。x265目前有三种aq模式。aq-mode 1是最安全稳定的aq,适合高码率/高画质编码;aq-mode 2相对来说效率最高,适合中低码率的编码;aq-mode 3对暗场进行加强,适合8bit编码防止暗场压烂。一般10bit编码根据crf高低决定aq选取,个人建议在crf <= 16时候使用aq-mode 1,否则使用aq-mode 2。注意同crf下,不同aq-mode出来的体积是不一样的,3>1>2。
--aq-strength 0.9。aq-strength 决定了aq的强度,一般来说,动漫的aq-strength不用太高(太高了码率也会浪费)。通常,aq-mode=1,aq-strength给0.8比较合理;aq-mode=2,aq-strength给0.9左右,aq-mode=3,aq-strength给0.7左右。
--psy-rd 2.0。psy是目前x265调节锐利度和细节保留的重要工具,低了会糊高了会出现动态瑕疵。默认的2.0其实是个不错的数值。如果中低码率编码,可以考虑降低到1.5左右。
--psy-rdoq 1.0。作用类似x264种的psy-trellis,开一点有助于保留细节和噪点。
政教处主任述职报告--rdoq-level 2。注意默认的--preset medium下它是0,这时候rdoq是没有用的。slow及以上自动开启。
--pbratio 1.2,降低p帧和b帧间画质差距。动漫编码b帧数量庞大,且pb之间分工不明显,因此降低这个参数对全局有利。
贾衣玫黄志忠主演的电视剧--cbqpoffs -2 --crqpoffs -2,类似x264里chroma-qp-offset。x264里,开启psy同时会降低这两个参数,因为psy作用于luma平面,会倾向于将码率较多的分配给luma平面,所以x264会根据psy强度自动调整chroma-qp-offset,强行提高chroma平面的码率分配。x265中无此机制,导致x265经常出现chroma欠码导致的彩纹理削弱。给-2左右的offset可以较好的缓解问题。
--qcomp 0.65,略高于默认的0.6,对时域分配采取略保守的策略,来针对中高画质优化。

5. VCB-Studio常用参数分析
vcb-s常用的参数如下:
x265-10b --y4m -D 10 --preset slower --deblock -1:-1 --ctu 32 --qg-size 8 --crf 15.0 --pbratio 1.2 --cbqpoffs -2 --crqpoffs -2 --no-sao --me 3 --subme 5 --merange 38 --b-intra --limit-tu 4 --no-amp --ref 4 --weightb --keyint 360 --min-keyint 1 --bframes 6 --aq-mode 1 --aq-strength 0.8 --rd 5 --psy-rd 2.0 --psy-rdoq 1.0 --rdoq-level 2 --no-open-gop --rc-lookahead 80 --scenecut 40 --qcomp 0.65 --no-strong-intra-smoothing --output "" -
编码规范方面,主要是关闭了open-gop;
tradeoff方面,主要是基于preset slower, 然后针对1080p的分辨率微淘了--ctu, ME相关的一些(x265默认参数针对的是>1080p分辨率),而动漫特性编码,--ref/bframes这些则予以加强。amp实测没有发现在1080p下有太多效果,不建议开启。
rc方面详细调整的较多,主要方向是通过关闭sao,调节psy/aq/cqpoff 等来强化细节保留和编码效率。总体来说,aq针对默认略低,而psy相比较默认提高(其实是rdoq开启),offset则手动加强Chroma画质(当然,如果你编码444请记得手动降低)
6. x265官方的--tune animation
x265官方给出的--tune animation 多少有点照抄x264的意思:
--psy-rd 0.4。从2.0直接降到0.4也是够拼的;在官方看来animation大概就是flash动画的效果。不过动漫压制确实可以调低一些,有时候不强调平面细节,希望把码率加到线条上,给到1.5左右也是可以的。
--aq-strength 0.4。同上。
--deblock 1:1。同上。
--bframes 增加 2。默认的bframes为4,增加2就是6。这个改动也是比较合理的。