[SilkyBible] XviD系列-8
来源:互联网 发布:手机淘宝可以买火车票 编辑:程序博客网 时间:2024/04/27 07:26
另外这个网页也有选项的设置说明
http://www.everwicked.com/content/XviD_Guide/xvid-07.php
其实我已经把 XviD 的相关设置选项的选择方法都写在上面的测试报告里面了,您没有注意到吗?
上面的测试报告与其说是测试报告,倒不如说是心得报告 :P
因为 XviD 压出来的结果会赢已经是这些日子以来大家都知道的事实,所以如果只是做单纯的测试数据报告,似乎有点无聊,所以小弟把制作时的想法,为什么这么选择,这么选择有哪些缺点,改进调整的方向和方法都写在上面的说明里面了。
例如为什么要提高 B-frame 的压缩率? 促进整体品质。
提高 B-frame 的压缩率将码率分给 I/P Frame 有什么好处? 参考的 I/P Frame 画质好,B-frame 的瑕疵会看不出来,整体品质提高。
B-frame quantizer 设得太高会有什么缺点? B-frame 会出现一堆瑕疵。
B-frame quantizer 设得太低会有什么缺点? 压缩率下降,连带整体品质下降。
B-frame 连续个数设得太多会有什么缺点? 静态画面会出现瑕疵。
什么时候判断考虑限制 quantizer? 视 1st pass 压出的文件大小和目标大小判断。
限制 quantizer 的范围要设多少才好? 视预测的 quantizer 使用情况判断。
限制 quantizer 太极端会有什么缺点? 会变成都用同样的 quantizer 压缩,变成固定品质压缩,那么用 1-pass quantizer 压缩即可,还做 2-pass 干嘛。
......
等等。
这些都是小弟的使用心得,其实都写在里面了
至于 DivX 5.0.5 的设置,其实没什么好设的,大部分的选项 DivX Networks 都已经从使用者接口中拿掉了,如果你还是要控制,可以从 CLI 命令列中下指令控制,不过我找不到需要特别这么做的理由,DivX 5.0.5 预设的 RC 演算法已经工作得相当好,几乎可以说只要 bitrate 指定好,开始压就可以去睡了,商业软件就是要做得这么好用才行
以上小弟使用的方法,并不是最好的设置,例如 XviD B-frame 的 quantizer 一定要和 DivX 5 一样设为两倍才可以吗?用 ratio 150, offset 100 会不会更好一点?这个可以再实验研究。B-frame 的 quantizer 下降,那么 I/P Frame 的限制范围可以放得宽松一点吗?这个也可以再实验研究。
同理,DivX 5.0.5 的设定这样是最好的吗?如果把 Bitrate modulation 不要设在固定品质,还是设给低动态的画面多一点 bitrate,或是设给高动态画面多一点 bitrate,看起来会不会比较好?
这些,都要再实验研究、归纳、整理,找出不同类型的讯源、不同的码率,适合的使用方法 ^^;
而这些就需要常常压制影片的人,才能作这样的整理与报告了。
小弟只能从原理上,提供一些思考的方向
今天休假,不过现在又有事情要做,所以图和测试四要晚点才能放上来,请见谅。
(而且图很多,要整理要花点时间 ^^;)
Posted by: gruel on Monday, April 28, 2003 - 11:22 AM CET (119 Reads)
Hi,
good news everyone! Things are moving fast.
The new API (dev-api-4) is now close to final. We got a new rate-distorsion optimized quantization mode (Trellis Quant) and differential Global Motion Estimation (GME) is ready to be included into the code as well.
When these features have proved to be stable, it's time for XVID 1.0. Stay tuned!
Trellis Quant 初步测试可以提高 PSNR 大约 0.1~0.3dB 左右。
由于使用 Trellis Quant 就不会用原本的 Too Small Limit 限制,不知道固定 quantizer 2 压缩,使用 Trellis Quant 会不会提升 PSNR。FFMPEG 是会的。
不过 Trellis Quant 强大的威力还是在中低码率时会更明显。
XviD 1.0 差不多快出来了
Things are moving fast!!
所有的图都是以该 Encoder 各自的 VFW Codec 解码,强制输出 YV12,由 Avisynth 统一做 YV12 -> RGB32,语法如下
avisource("Kiddy Grade NCOP_DivX5.05-B_4-pass.avi", false, "YV12").ConvertToYUY2().ConvertToRGB32()
先转成 YUY2 再转成 RGB32 的原因是,目前的 Avisynth 2.5,YUY2 -> RGB32 的 upsampling 计算式比 YV12 -> RGB32 的计算式,品质要好。Avisynth 的 YV12 -> RGB 计算式,目前还没改成较高品质的 upsampling 方法。
因为图太多,文件太大,为避免下载负担,部分情况用口述。
开头有一段缓慢 zoom in,镜头慢慢拉远的场景,画面是漆黑的宇宙和中间发光的星球,其黑白交界处,XviD 有比较明显的方块感。这一段 XviD 会插入很多 B-frame,B-frame 用高 quantizer 压缩,很容易出现方块。减少连续 B-frame 个数,可以减低这种方块感。DivX 5 也有这种方块现象,不过因为 DivX 5 的 B-frame 最大个数只能为一个,一个 B 之后一定要接一张 P,形成 ..BPBPBP... 这样的构造,所以不会有连续好几张有瑕疵的 B 出现在画面上,停留一段长时间而被人眼注意到。另外 DivX 5 的 DirectShow Filter Decoder 如果将解码的品质调高,会有 Post-Processing 的 De-block Filter,去方块滤波器的作用,也可以减少这种方块现象,所以看起来不明显。XviD 要避免,可能要减少 B-frame 的个数、降低 B-frame quantizer、改用 MPEG quant 压缩(MPEG quant 方块瑕疵较少),或者是开启 XviD Decoder 的 De-block Filter。
接下来是这部动画的标题字幕,「Kiddy Grade」,红色的字,完全静态的画面。XviD 在这里没有问题,但是 DivX 5.0.5 在线条的边缘,有很诡异的闪烁的噪声。这个看单张抓图看不出来,要实际观看时,接连好几张画面连着看,才会发觉这种时间轴上噪声闪烁的现象。在后面的画面中 DivX 5.0.5 也是一样,在静态的场景,有时线条边缘会有闪烁的噪声,很引人注意。
接下来的图片是 XviD 在这整片中最糟的 case。
Frame #628 DivX 5.0.5,这是一张 B-frame,Quantizer 8 压缩。前一张 Frame #627 是一张 P-frame,Quantizer 4 压缩,画面和这张 B 一样。
注意图中用白色箭头指出来的部分。
左边的两个箭头指出来的瑕疵,一个是黑色的细线段,一个是灰色的方块,这两个瑕疵都是源文件中没有的。而右边箭头指的瑕疵,看起来很奇怪,头发边缘的线段突然缺了口,放大观察,上面和下面一点的地方也有缺口,这个缺口看起来很像是有一个灰色的方块插进去, 中断了原本连续的线条。
这是怎么回事呢?
我们看下一张 Frame #629,Frame #629 是一张 P-frame,Quantizer 4 压缩。Frame #629 较 Frame #628 脸部往左移动了位置。仔细观察两张图片,细线段瑕疵出现的位置,是下一张图头发尖端移动到的位置,而左边线段的缺口位置,在下一张图是灰色的墙壁。(抓下来用 ACDSee 切换着看会更清楚)
628DivX B-frame Quantizer 8629DivX P-frame Quantizer 4
我们知道 B-frame 有一种动作预测模式叫做 Direct Mode,用这种预测模式时,该 B-Frame 的 Forward/Backward Motion Vector 是由下一张 P 直接产生:
I B P
连续动作时,我们可以预测中间的那张 B,运动会介于 I 和 P 之间,所以我们直接拿 P 的 MV 除以二,作为 B 的 Forward/Backward MV,以 I 和 P 的平均,做为参考对象。
这样我们就可以省下记录 MV 的 bit,只要记录和 (I+P)/2 的误差就好了。这是 B-frame 压缩率最高的动作预测模式,在高 quantizer 中,这种模式使用的次数会比较多。
那二个白色箭头所指的瑕疵,就是使用了 Direct Mode 压缩,以前后画面的平均为参考对象。然而后面那张 Frame 在这些地方和前面的差距很大,B-frame 又用高 quantizer 压缩,无法精确记录参考后的误差,所以便出现了这种「后面画面的影像残留在前一张画面」的诡异现象。
我们来看 XviD 的惨状
628XviD B-frame Quantizer 8629XviD P-frame Quantizer 4
XviD 在 #628 少了一些残像的瑕疵,不过还是有灰色的方块。惨的是,这几个画面的动态都不大,XviD 是插入最大的 B-frame 个数,#628 的前一张 #627 也是 B-frame,也是有灰色方块,连续两张 Frame 都有灰色方块,比较容易被看出来。
XviD 的另一个败笔是背景灰色的墙壁,方块瑕疵很明显,很容易注意到。虽然 XviD 在人物脸部,线条周围的噪声较 DivX 少,不过背景的方块还是很引人注目。
- [SilkyBible] XviD系列-8
- [SilkyBible] XviD系列-1
- [SilkyBible] XviD系列-2
- [SilkyBible] XviD系列-3
- [SilkyBible] XviD系列-4
- [SilkyBible] XviD系列-5
- [SilkyBible] XviD系列-6
- [SilkyBible] XviD系列-7
- [SilkyBible] XviD系列-9
- [SilkyBible] XviD系列-10
- [SilkyBible] XviD系列-11
- [SilkyBible] XviD系列-12
- [SilkyBible] XviD系列-13
- [SilkyBible] XviD系列-14
- [SilkyBible] XviD系列-15
- [SilkyBible] XviD系列-16
- [SilkyBible] XviD系列-17
- [SilkyBible] XviD系列-18
- bnu1061 古墓丽影 C语言版
- [SilkyBible] XviD系列-7
- [VB.NET]询异步socket通信完善的例子.
- bnu1063 聪明的辉蛋 C语言版
- [VB.NET]求支持ole的菜单命令代码!60分答谢!
- [SilkyBible] XviD系列-8
- [VB.NET]怎样将datagrid的数据导出到datadset
- 学习LUA,使用IUP进行GUI程序设计
- [VB.NET]如何把Access 2007 ODBC驱动提出来安装到,其它机器上呢?
- bnu1064 爱运动的辉蛋 C语言版
- 5.手牵手
- [VB.NET].net的write函数求助
- bnu1065 时尚的辉蛋 C语言版
- bnu1066 爱学习的辉蛋 C语言版