[补充]渲染器品质测试

之前的测试,被aki指出并不是很精确(aki联动帖),所以重新制作了一个测试用的图片。虽然不能100%还原实际观看视频时的情况,但是还是希望这个测试得到的结果能更加精确一些。

Source测试用原图

重新制作的图片包含了4个部分。最上方是黑色、红色、绿色、蓝色分别到白色的渐变。为了测试的精确,每个渐变的宽度为256px,正好是0-255阶。
第二部分为AVS生成的color_bar。
第三部分为我制作的随机颜色彩色条纹。每个条纹的宽度越往右越窄,最右边的条纹宽度为1px。
最后一部分则是普通的文字。

ImageSource(“Color_Test.bmp”,end=59)
Assumefps(“ntsc_video”)
ConverttoYV12(matrix=”rec601″)

EVR Haali
EVR                                                                 Haali

madVR VMR9
madVR                                                              VMR9

ffdshow
补充一张ffdshow的高品质RGB32输出

图片可点击放大进行肉眼判断。
输出图已经交给aki,等待他的数学计算结果。

常用渲染器品质测试

今天闲来无事,决定对常见的渲染器进行一下品质的测试。

测试前先稍微讲一下影响渲染器品质的几个主要因素。
1、Resize算法
2、Upchroma算法
我的测试并没有涉及到Resize之后的品质,所以第一条就略过不谈了,我们重点来说第二条。

众所周知,视频文件并非使用RGB,而是YUV。在YUV当中,使用的最多的则是YV12,也就是YUV4:2:0。对于YV12来说,它的亮度分辨率为1,色度分辨率为1/2。举例来说,对于一个720P的视频,它的亮度分辨率是1280×720,但是色度分辨率仅为640×360。这也就是为什么把一个RGB转到YV12之后,体积会变小的原因。再往深里说,为什么YV12要抛弃一半的色度数据而保留全部的亮度数据呢?这是由于人眼的特性是对亮度敏感,对色度不敏感而决定的。那么再顺便说个题外话,从RGB转到YUV,是要经过一系列计算的,那么这个计算的方式,也就是算法的不同,会导致结果的不同。我们常说的BT.601、BT.709等等指的就是RGB <-> YUV转换时不同的算法。在国际标准中,对于SD以及SD以下的视频,是使用601,而HD以及更高分辨率则使用709。换句话说,DVD应该用601,720和1080应该用709。

扯的有点远了,回到主题上来。由于YV12的色度分辨率仅有1/2,所以在播放的时候,需要把这1/2变成1才行。那么这个从1/2变到1的过程就是“无中生有”了。这个“无中生有”指的就是第二条Upchroma算法,这个算法在很大程度上影响了视频的播放质量。

那么测试开始
系统:Win7 Pro x64
显卡:GeForce 9800GT
播放器:MPC-HC 1.3.1337.0
解码器:ffdshow
色彩输入:YV12
色彩输出:YV12

我们首先需要一个用来测试的原始视频。我拜托风儿做了一个分辨率是1280×720的测试用图片,然后将这个图片作为原始素材导入AVS生成了一段测试用视频。

COLOR 原始图片 点击放大

ImageSource(“COLOR.bmp”,end=59)
Assumefps(“ntsc_video”)
ConverttoYV12(matrix=”rec709″)

以上内容为AVS脚本。
大概内容是,将Color.bmp文件作为图像,生成60帧。然后将帧率指定为NTSC制式的标准video帧率,也就是29.97,最后将RGB转换到YV12,使用709并将色彩范围压缩到16-235。
之后我使用VDM打开这个AVS脚本,把原始的YV12视频流直接保存出来,没有经过任何压缩。这样我们就得到了一个内容是YV12的测试用视频,接下来就要用这个视频来看各个渲染器的效果了。

VMR9 VMR9

EVREVR

Haali Haali

madVRmadVR

通过观察可以发现,在灰阶显示效果上,madVR以绝对的优势胜过其他的渲染器,Haali的表现也强于VMR和EVR。madVR的SoftCubic100带来的效果真不是盖的,难怪madshi一直在讲,madVR使用了效果最牛X的Upchroma算法。不过在彩色过度上,我的眼睛还真没看出什么太大的差别来……囧
排名的话,madVR > Haali > EVR ≈ VMR

madVR的确给了我们无与伦比的回放品质,但是正如我前面文章中讲过的一样,madVR的缺点也同样明显。在提供了高品质的同时,它无法给我们带来便利的功能。而且它对显卡性能要求也很高。是否要坚持使用madVR,还要各位自己决定了。

Haali分离器在打开MKV文件时停滞的解决办法

最近在放MKV文件的时候发现了这么一个事情。
由于我左右的个人Rip都是MKV格式,并且为了放流全部都放在一个文件夹中。在这个文件夹中大概有500多个MKV文件。每次当我播放这其中的某个文件时,播放器都会卡好几秒之后才正常播放。但是如果文件夹下只有很少的几个MKV文件,播放的时候则完全不会出现停滞现象。

针对这个让人极为不爽的问题,我进行了一番思考。
在MKVToolnix中Mux的时候,有一个Link UID选项。这个东西的作用,是把两个MKV文件通过UID链接起来,播放的效果是,只要这两个MKV文件在同目录下,播放完第一个之后会自动去播放下一个。
于是我在想,会不会是因为Link UID功能导致停滞。因为我那500多个MKV都在一个文件夹下,如果要有Link效果,那么需要对本目录下存在的所有MKV文件进行UID扫描,这可能就是导致停滞的原因。

既然找到了可能是原因的疑点,那么就设置一下进行确认。
打开Haali Media Splitter的属性窗口,在Input项中发现有设置项Try to open linked files,把这项设置为NO之后,再次打开我那500多个MKV中的一个,停滞现象消失了。

看来导致停滞的原因果然就是linked功能。这个功能我基本上也不常用,估计大部分的Riper也不会用到这个功能,个人建议还是把他关掉比较好。

高品质渲染器madVR更新至v0.11

好久没有关注madVR这个东西了,刚刚才发现发布了0.11版本。

madVR v0.11

* 修复: 亮度重采样设置无法正确的读取/保存
* 修复: 在某些电脑上开始播放视频前会停滞若干秒
* 升级 cr3dlut 至 v2.2

从0.11的changelog中可以发现,那个无法保存Resample算法的该死bug终于被修复了。

接下来我稍微对0.11进行了一下简单的测试,使用的视频源都是我自己的Rip,以下为简单的测试结果。

系统:Win7 Pro x64
播放器:MPC-HC 1.3.1335.0
显卡:GeForce 9800GT

1、Resample算法无法保存的Bug确实被修复了
2、播放DVD会出现「Query unknown PropSet」的错误提示,但是可以继续播放下去,菜单可选
3、interlaced视频无法启用硬件Deinterlacer
4、MPC-HC内建字幕引擎不起作用,需要使用VobSub或者ffdshow来挂载字幕

目前测试的结果就这样。就品质来说madVR仍旧在我用过的渲染器中排第一,但是说到兼容性和功能,就不那么乐观了。对于希望搭建HTPC平台的朋友,这个渲染器不会是一个明智的选择。首先它对显卡的要求很高,其次它现在不支持并且将来也不会支持DXVA硬解,最后他也当然不支持显卡对视频的硬件处理效果(比如nVidia的PureVideo Deinterlacer)。

对于那些不追求功能只要求品质的发烧友来说,madVR还是可以尝试一下的。