今天闲来无事,决定对常见的渲染器进行一下品质的测试。
测试前先稍微讲一下影响渲染器品质的几个主要因素。
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生成了一段测试用视频。
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的测试用视频,接下来就要用这个视频来看各个渲染器的效果了。
通过观察可以发现,在灰阶显示效果上,madVR以绝对的优势胜过其他的渲染器,Haali的表现也强于VMR和EVR。madVR的SoftCubic100带来的效果真不是盖的,难怪madshi一直在讲,madVR使用了效果最牛X的Upchroma算法。不过在彩色过度上,我的眼睛还真没看出什么太大的差别来……囧
排名的话,madVR > Haali > EVR ≈ VMR
madVR的确给了我们无与伦比的回放品质,但是正如我前面文章中讲过的一样,madVR的缺点也同样明显。在提供了高品质的同时,它无法给我们带来便利的功能。而且它对显卡性能要求也很高。是否要坚持使用madVR,还要各位自己决定了。
比较好奇要用爽madvr,需要什么配置显卡加CPU来的……
requirements:
– graphics card with full Direct3D9 hardware support
– at least 128MB of dedicated graphics card memory
– Windows XP or newer
以上是作者给出的要求
另外CPU的话,主流的基本上就可以了
用了一下,P8600,GF9300M GS,WIN7
开了x264压制的480p,9720p
第一次载入时会比较慢
但一旦打开视频播放还是快进暂停都正常
不过
当按mpc的stop时候,整个机器卡死,只有鼠标能动,最后重启,如此三次… :2:
但是不按stop直接点红X退出什么事都没有呢。
我这里没有出现你的情况
不过madvr确实有时会死掉
使用Beyond Compare将截图比较.
得出几个结论:
Haali的结果是差异最大的.madVR次之。
VMR9=EVR 一点区别都没有,虽然MD5校验并不相同。
madVR在彩色与灰度融合区差异最大,也就是边界叠加的最多。其他都是两像素,它是4像素。
madVR的灰阶插值分散的最均匀,Haali次之。
彩色结果一致,但人眼的容差大了,结果看不出区别。 :1: