结论就是,不要用那些「曲线压缩」比较好 :P
压缩的时候,bitrate 会视压缩的困难程度上下变化(VBR),encoder 的 rate control
会控制让压出来的平均 bitrate 接近我们所设定的最终大小。
「曲线压缩」的意思就是将 bitrate 较大的 frame 拉下来,
降低一点流量(High bitrate scenes %),bitrate 较小的 frame 补上去,
提高一点流量(Low bitrat scenes %)。
也就是将原本上下震荡的流量曲线压平一点,最大和最小的差距不要那么大。
压得越平,流量曲线就越接近一条固定的直线,也就是变成 CBR。
Alt. Curve 也是做一样的事情,只是参数更复杂。
不过这样实在很没有意义不是吗?本来 bitrate 高的 frame,就是因为这个 frame 需要
较多的 bits 纪录,你现在把它拉下来,画质岂不更惨?而 bitrate 低的 frame,就是
不需要花那么多 bits 记录的 frame,你又给它多补一些 bits,岂不浪费?
所以我从 Nandub 开始就一直搞不懂,Koepi 的曲线压缩设计到底是在做什么。
如果有人问我 Nandub 的曲线压缩要怎么设,我一定回答通通不要用 :P
因为我从来没压过流量设得极低的作品,所以无法理解这些曲线压缩究竟有什么用。
根据 Koepi 的说法,当流量极低的时候,很多 frame 的 bitrate 都不够。
此时如果把少数几个 bitrate 很高的 frame 拉低一点,把省下来的 bits 分给其它
frame,立刻会对这些游走在底线边缘的 frame 的画质有很大的帮助。
曲线压缩的目的便是牺牲少数几个 frame,让大部分的 frame 增进画质。
而,这少数几个 bitrate 超高的 frame,又通常都是高动态的画面。
人眼对高动态的画面比较无法精确的判断、分辨出画质的好坏。
所以牺牲这几个 frame,增进大部分时间看起来的品质,可以说是相当划算。
好像还蛮有道理的 :P
不过如果曲线压缩的参数设定得不好的话,对画质会有很大的伤害,
而且在不是超低流量的情况下,曲线压缩也没有意义。
所以最好的作法还是,让 encoder 自行视情况调节,使用自由的 VBR,
这样压出来的结果会越接近 CQ「固定品质」。
(当然,如果流量实在设得超低,CQ 压出来的结果就是「固定烂品质」:P
这时适当的运用曲线压缩,以少换多,就有它的价值了)
经过许多人的测试经验,最后的结论就是「linear scaling」的结果最好。
linear scaling 就是不用任何的曲线压缩,1st-pass 以 quant 2 压一遍,
2nd-pass 就直接把 1st-pass 压出来的流量曲线整个往下平移,
降低 bitrate,达到你所设定的目标大小为止。
由于曲线只是整个往下平移,使得最终的 bitrate 变小,而不改变其原本的震荡幅度,
所以称为「线性的调整大小」。
这样,原本复杂,需要高 bitrate 的画面还是分到较多的 bits;
简单,不用太多 bitrate 的画面也不会浪费了 bits。
线性调整压出来的结果较接近「完美的 VBR」,也就是固定的平均品质,
不会有几个 frame 突然发生明显劣化的情况。
使用 linear scaling 的方法很简单,2nd-pass 的时候,把 Two Pass 设定底下的
High bitrate scenes % 和 Low bitrate scenes % 两个设定都设为 0,
不使用曲线压缩。
payback delay 一般设为 10 秒,也就是 24fps 的话设 240,30fps 设 300。
同时关闭 Alt. Curve,通通不要用。
这样跑 2nd-pass 的时候就会自动根据 XviD Codec 内建的 scaling 算法,
做线性调整。
另一个方法,就是用 Kopei 写的 StatsReader。
(Koepi 后来也建议,使用 linear scaling 较好)
用 StatsReader 读入 1st-pass 的 stats 文件,设定目标档案大小,
然后储存一个新的 stats 檔。
XviD 压缩时选 2 Pass - 2nd pass Ext.,Two Pass 设定底下的 2nd pass stats
选你刚刚储存的那个 stats 檔。同样曲线压缩、Alt. Curve 等等都要关掉。
这样便会用 Kopei 设计的 linear scale 来做线性调整了。
(Koepi 设计的 linear scale 和 Codec 内建的计算法有些不同)
还有,用 NiTroGen 写的 XviD Stats Viewer 也可以做 linear scaling,
用法和 Kopei 的相同。