[补充]渲染器品质测试

之前的测试,被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还是可以尝试一下的。

ESI全线产品开始更新Win7驱动

ESI公司开始为其旗下全线产品更新Windows7 x86/x64驱动。

● ESI中国官网新闻链接
● ESI全球官网驱动下载
● MAYA44驱动下载

啊啊,ESI你终于更新新驱动了,真是等的我好苦啊!
从用上Win7开始,MAYA44在Win7下用Vista的驱动,工作的就不太正常。经常出现各种莫名其妙的RP问题。比如MME/WDM录音不能啊,有时会莫名其妙的爆音啊,AA保持ASIO接口关闭之后无法再次打开啊之类的种种莫名其妙的问题,都随着这次新驱动的发布一扫而光。
用起来真可谓神清气爽啊,啊哈哈哈哈。
我的MAYA44现在终于可以在Win7下完美工作了,对于把整个平台彻底转移到Win7上我已经没有任何顾虑了。
再见了,XP(虽然我还在虚拟机里用它 XD)

NV控制面板的颜色范围测试(啊啊啊我快疯了!)

image

这个这个这个就是这个东西!这个东西到底是怎么起作用的我完全搞不清楚啦!总之我进行了一系列的测试!

上面的单选,默认是选择的第一个,就是[通过视频播放器设置],选这个的时候下面的一切都是不可调整的,这样就看视频播放器那边要怎么办了。如果选了[通过NVIDIA设置],则下面的选项变成可选状态,视频将通过这里进行颜色等等的调整。

然而!对于不同的渲染器,结果会是什么样子呢!

进行测试的渲染器有两个,一个是VMR9,一个是EVR。然后根据我前文的理论,VMR9在XP下测试,EVR在Win7下测试。测试的标准,是我的眼睛,有异议的先闭嘴 XD

好吧现在开始,先进行VMR9的测试。测试播放器一律使用MPC-HC

VMR9 无渲染:
选择[通过视频播放器设置],画面颜色为[16-235]
选择[通过NVIDIA设置],下面的[动态范围]调节有效,调整到[完全 (0-255)]可以得到正确颜色

EVR:
选择[通过视频播放器设置],画面颜色为[0-255]
选择[通过NVIDIA设置],下面的[动态范围]调节有效,调整到[完全 (0-255)]可以得到正确颜色

结论:
在XP的VMR9下,这个渲染器自己是不会干把颜色扩张到0-255这个活的,要让它有正确颜色有两种方法。1是控制面板里这么调,2是用MPC的shader功能。
在Win7的EVR下,EVR是会自动进行颜色扩张的,当然你也可以通过NV的控制面板这样指定得到正确的颜色。

记得之前和茉莉曾经讨论过TMT是用的什么渲染器,我当时的意见是,因为NV控制面板里的这个选项对TMT的画面造成了影响,所以TMT用的应该是Overlay,而且TMT不能直接被QQ截图。但是现在看来这个观点可能有点站不住脚了,NV控制面板里的这个选项对VMR9和EVR同样会有效果(Overlay是必然有效果的,Haali和MadVR我没有测试,不过应该是无效),我太lag了,才发现这个……

所以说,如果打算用微软提供的VMR9或者EVR,我个人还是推荐把NV驱动面板这里调节到完全。

NVidia显卡的覆盖合成器颜色设置

现在硬盘越来越便宜了,所以有好多资源党已经不满足与看Rip,而改看DVDISO和BDMV了。=v= 当然播放这样的格式,最好还是使用专用的播放器,比如PowerDVD,TMT等等。不过这些播放器默认使用的渲染器都是Overlay,也就是覆盖合成器。

那么,我们知道,像DVD,BD这种东西,都是设计给TV播放的,所以颜色的范围也是符合TV的16-235,这样直接拿到电脑上播,会觉得画面蒙上了一层灰色。如果使用的是EVR也好说,EVR会自动做颜色转换这步。不过专用播放器是用的Overlay,所以我们需要调节一下设置来得到正确的颜色。

打开nVidia控制面板,会看到如下图的设置。

image

在这里按照上图设置,即可在覆盖合成器中得到正确的颜色了。

另外NV的控制面板里还有好多其他的视频设置,有兴趣的话可以自己试一试~

关于上一篇文中MPC的设置问题

在我的《纯手工搭建基于MPC-HC的简易播放平台》一文中,我推荐大家勾上mpc设置中的[在.ini中保存设置],这样重装系统也能保留设置。

但是,这会带来一个问题,而且这个问题困扰了我很久……囧。

症状表现:在任务管理器中可以看到mpc进程,关闭mpc程序,可是mpc进程要过好几秒之后才会消失。

原因:NOD32对ini文件进行了高启扫描,导致mpc关闭很慢。

所以:使用NOD32的同学,请在NOD32的[高级设置]->[排除]中把mpc的.ini文件添加进去,就可以解决这个问题了。

纯手工搭建基于MPC-HC的简易播放平台

现在有很多解码用的Package,比如完美解码。这种Package对于懒人真的是很方便,装一个基本上就万事无忧了。不过有些情况下我们需要自己手动搭建而不是使用这种Package,比如压制人员。

很多朋友曾经问过我,如果要手动搭建该怎么做。说实话,现在的几款主流播放器,自己都内置了很多滤镜,基本做到了不需要安装任何解码器就能通吃所有格式了。不过这篇文并非完全使用MPC-HC的内部滤镜,而是和安装第三方系统滤镜相结合。

本文仅针对需要手动搭建播放平台的解码用户,不考虑编码情况。

 

准备工作

主播放器:

Media Player Classic – Homecinema 1.3.1249
http://mpc-hc.sourceforge.net

视频滤镜:

Haali Media Splitter 1.9.42.1
http://www.free-codecs.com/download/Haali_Matroska_Splitter.htm
FFDShow
http://sourceforge.net/projects/ffdshow-tryout/files/
Real Alternative 1.90 Lite
http://www.free-codecs.com/download/Real_Alternative.htm

音频滤镜:

AC3Filter 1.63b
http://www.free-codecs.com/download/AC3_Filter.htm
CoreAAC 1.2.0.575 rev.3
http://www.free-codecs.com/download/CoreAAC_Directshow_filter.htm
CoreFLAC 0.4
http://www.free-codecs.com/download/CoreFLAC_Decoder_Encoder.htm
CoreVorbis 1.1.0.79
http://www.free-codecs.com/download/CoreVorbis.htm

其他工具:

AVISynth 2.5.8
http://www.free-codecs.com/download/AviSynth.htm
DirectVobSub(VSFilter)2.39
http://www.codecs.com/download/DirectVobSub.htm

 

方案

[分离器]:使用Haali分离MP4 MKV OGM,使用系统分离器分离MPG AVI。
[解码器]:软解 视频编码主要依靠ffdshow进行解码。硬解 H264 VC-1使用MPC-HC内置DXVA解码器。

 

安装

*首先确保系统内比较干净,如果装了其他Package和解码器请先全部卸载。没有特别说明均安装在默认路径。

1、安装AVISynth 2.5.8,一路Next即可。

2、安装Haali Media Splitter。设置如下图。(*1)

haali

3、安装FFDShow。设置如下图。一路下一步。

ffdshow

4、安装Real Alternative 1.90 Lite,一路Next即可。

5、安装上述所有音频滤镜和VobSub,均为一路Next。

6、安装MPC-HC(压缩版请解压),由于MPC-HC本身算是绿色软件,所以可以放到其他位置。

 

设置

1、配置MPC。
运行mpc-hc,选择菜单的View –> Language –> Chinese (simplified)把界面语言调节到简体中文
视图菜单 –> 选项
[播放器]:勾上右侧的在.ini中保存设置,这样所有的设置会保存在ini里,就算重装系统也不会丢失。
[格式]:单击右下方的Video按钮,关联所有视频文件。
[播放]:勾上自动装载字幕。
[输出]:DirectShow视频,XP/2003用户请选择VMR9(未渲染),Vista/Win7用户请选择EVR自定义设置。RealMedia视频和QuickTime视频都选择DirectX 9。VMR7/9(未渲染)与EVR CP设置中,表面选择3D surfaces,重设尺寸选择Bicubic A=-0.60 (PS 2.0)。
[内部滤镜]:源滤镜里只选择DVD Video Title Set与MPEG PS/TS/PVA。转换滤镜中选择LPCM。(*2)
[字幕]:要缓冲的子图像数量输入0,最大纹理分辨率选择Desktop。
[默认风格]:相对于视频帧的字幕位置前面打成对勾。
确定之后重启MPC,右键单击主界面,在右键菜单里选择渲染器设置 –> 重置 –> 优化值。Vista/Win7用户还需要去掉 渲染器设置 –> 展示 –> 禁止桌面混合 前的勾,否则播放视频的时候会关闭Aero效果。
右键菜单 –> 着色器 –> YV12 Chroma Upsampling,如果选项是灰色的话,就在播放视频的时候设置。

2、配置FFDShow
找到开始菜单内的FFDShow组,打开ffdshow 视频解码器设置。
[编码解码器]:这里面是选择让ffshow解码什么格式的地方。绝大部分保持默认即可,需要调整的如下。H.264/AVC用ffmpeg-mt,MPEG1和MPEG2用libmpeg2,MPEG2把下方的DVD解码勾上。WMV 1/7 2/8 3/9 VC-1都用wmv。
[DirectShow控制]:右面总共有三个勾,都勾上。(*3)
[输出]:勾上NV12。勾上HW反交错。(*4)
打开开始菜单内的ffdshow 音频解码器设置。
[编码解码器]:这里除了AVIS用AviSynth之外,其他通通选择未启用,我们不用ffdshow来做音频解码。

3、配置AC3Filter
在开始菜单内找到AC3Filter组,打开AC3Filter Config,会出现一个Warning,确定即可。
[System标签]:左侧只勾AC3 DTS DVD。

 

到此为止,基本上大功告成。以上只是软解方案,如果想使用硬解的话,就把ffdshow里的H264与VC1设置为未启用,然后打开MPC-HC内部的这两个滤镜DXVA版即可。

本文只是起一个抛砖引玉的作用,并不是说按照本文设置之后就能够顺利的播放所有格式。比如蓝光Remux中可能有EAC3或者TrueHD音轨,按照本文的设置,是无法播放这些次世代高清音频格式的。本文的主要目的是告诉大家一个自己手动搭建的方法,根据自己的需要寻找合适的解码器,选择合适的解码方案。

本文大部分为我本人的经验之谈,如果有错误请指正。

 

*1 这样设置,即不使用Haali分离MPG和AVI。我的个人经验,很多游戏的动画是用MPG封装的,如果在这里选了MPEG,那么系统默认MPG的分离器为Haali,很大几率会造成不兼容的问题。具体表现是游戏的OP播不了,或者播放出错之类的,所以不建议用Haali分离MPG,AVI同理。

*2 Haali的分离器无法分离m2ts文件内的LPCM音频,而MPC内建的则可以,所以源滤镜里要选上MPEG,并且转换滤镜里勾上LPCM。

*3  FFDShow内建了一批支持正常调用ffdshow做解码的程序名字。默认情况下,ffdshow看到如果是这些程序调用自己,就会通过。把所有的勾都勾上之后的效果,是当有ffdshow不认识的程序要调用自己的时候,ffdshow会弹出提示框让用户选择是否使用ffdshow。有些游戏在播放动画的时候,用ffdshow解码会出错,所以在玩游戏的时候弹出ffdshow请尽量选择永远不使用。

*4  GeForce8系列及以上和HD 2XXX系列及以上提供了一套硬件Deinterlace算法,品质是现有的算法所无法比拟的,通过这样设置,当在播放Pure interlaced视频的时候,就能够开启硬件反交错。

Share EX2网络遭遇Amazon服务器大面积攻击

从前天开始,Share的工作状态就很奇怪。具体表现为,不定时的出现时间检测错误导致通讯停止。昨天到今天状态加剧为Share程序失去响应。

经过调查,发现为Amazon服务器群对Share进行了攻击。通过发送特定数据包,会导致Share出现时间检测错误的症状并停止通信。然后通过大量特定数据包的集中轰炸,使Share程序停止响应。

目前日本2ch论坛已经成立了Amazon攻击事件对策本部,地址如下:

http://hideyoshi.2ch.net/test/read.cgi/download/1247211701/

2ch给出的解决方法为使用PeerGuardian进行Share保护,其原理就是针对Share的端口进行保护,过滤掉来自Amazon服务器群的数据包。

以下是2ch整理出来的Amazon服务器群IP地址范围列表:

AMAZON-H42-8-96:12.187.8.96-12.187.8.127
AMAZON-01:207.171.160.0-207.171.191.255
AMAZON-02:72.21.192.0-72.21.223.255
AMAZON-03:216.137.32.0-216.137.63.255
AMAZON-AES:216.182.224.0-216.182.239.255
AMAZON-EC2-2:72.44.32.0-72.44.63.255
AMAZON-EC2-3:67.202.0.0-67.202.63.255
AMAZON-EC2-4:75.101.128.0-75.101.255.255
AMAZON-EC2-5:174.129.0.0-174.129.255.255
AMAZON-NET:204.177.154.0-204.177.155.255
AMAZON-EU-AWS:79.125.0.0-79.125.63.255

解决办法:

一、使用PeerGuardian,添加列表中的服务器。PeerGuardian要生效需要先清空share里所有的node,然后关闭share,打开PG,再打开Share,之后PG会过滤掉连接到的不良node。

二、有路由器的话,可以在路由器的防火墙里设置,ban以上列表的IP

三、使用cfos工具的同学,可以通过cfos的IP-Blockr功能ban掉以上IP

四、系统内安装有第三方防火墙的同学,可以通过第三方防火墙ban掉以上IP

麻烦:

这次的大规模攻击,除了对P2P造成不便之外,最严重的问题莫过于导致了Share的node生存率达到了历史最低。毕竟不是所有的使用者都懂得网络方面的知识,直接结果为Share大面积用户流失。对于一个P2P工具来说,用户流失是最为要命的问题。