小烧按:
(madVR的开发者,德国人Madshi)
对于madVR渲染器,使用PC视频播放器的用户不会陌生。说它是PC电脑上的最强渲染器一点都不为过。有了它,PC播放的画质超过顶级蓝光播放器不再是”不可能的任务“。即使是这个神一般的工具,使用起来依然与大多数PC软件一样 - 设置选项繁多而且复杂。再加上这是一个由德国人开发的软件,菜单统统是英文的,对于大多数用户来说并不是很友好。
即使看到过几篇关于使用电脑播放器+madVR播放的文章,感觉作者也只是人云亦云,一知半解。以为自己安装了madVR就万事OK了。殊不知,madVR的强大远远超出了人们的想象。
幸好,一名叫做“”萬年冷凍庫的朋友(应该是台湾人),在Blogspot发布一篇大约3万字的madVR使用指南。详细到每一项设置该如何调整,最终测试效果如何。相信读完这篇文章,大家都能成为PC视频播放的高手。原文在此:http://lysandria1985.blogspot.com/2013/01/3-madvr.html
由于一些不可抗力的原因,原文页面无法被大多数人访问,因此一烧体验馆将此文章搬运过来,分4-5篇进行连载。
正文开始:(以下约5千字,请收藏文章后阅读)
---------------分割线------------
在介绍这东西之前,先用张图来复习一下上回提到的播放过程:
这边可以看到视讯输出的最后一道过程就是Video Renderer(视讯渲染器)的部分,同时这个部份也是对画质影响最吃重的一个部分,在来源档案相同的前提下,可以说影像播放的画质好坏取决于渲染器之上也不为过,而madVR正是以此为最大卖点的渲染器,此渲染器是由DOOM9论坛上的madshi所开发,不惜一切效能代价以换取最大的画质表现,也因此这个渲染器对显卡的要求稍微吃重些,超越了我们一般对播放软件之硬件要求的常识(这个常识是指,只有玩游戏才需要用到较高阶的显卡,影像播放只需要低阶显卡甚至内显已可胜任),我们最好以run一个游戏的标准来看待其所需要的效能。但并不是说只有好的显卡才能用这个渲染器,事实上madVR内部的选项相当弹性,根据设置的不同它可以让低阶卡跟内显顺顺跑,也可以把TiTan操爆,一般来说,我建议在能力许可的范围内选择一张不算太差的独立显卡才能发挥它该有的战力。
翻译一下开发者madshi提到关于madVR的一些特色:
高质量的chroma upscaling(下面内文会再解释这东西)
高质量的scaling(各种升降频算法)
高质量的YCbCr→RGB转换
对屏幕执行gamut和gamma的调色校正
内部演算皆为16bit的高精度处理
最后处理完成的16bit讯号dithered降转成8bit RGB输出
避开各种显卡内加料(对画质有负面影响)的算法
所有作业皆透过GPU shaders完成(IVTC运算除外)
以追求最高质量为第一优先
再重申一个观念,视讯档案的播放,解码吃的是CPU效能(硬解例外,硬解是使用显卡上的译码模块,既不吃CPU也不吃GPU效能),而渲染才是吃显卡GPU效能,使用madVR时,GPU的效能很重要。
接下来进入正题,首先先到官方讨论页下载最新版的madVR
http://forum.doom9.org/showthread.php?t=146228
或是到madVR官网下载:
http://madvr.net/
http://madvr.com/
madVR目前还没有安装档,madshi说他想到v1.0时再做安装档,所以下载后解压缩完自行将文件夹丢到想放的位置,像我还是习惯丢到Program Files (x86)下面,之后进madVR文件夹里点一下"install.bat"就会出现滤镜注册成功的讯息,以后要更新madVR只需要将文件夹整个盖过去即可。
"restore default settings.bat"这个执行档可回复所有的madVR设定到初始默认值,如果设定时乱了套或是出现问题,可以点击这个执行档,重新开始。
madVR的初始默认值是重视效能取向和稳定性的,也就是让大部分的显卡都可以正常运作为前提的设置,懒的研究设置的朋友用默认值也可以顺顺使用madVR,但如果想要进一步发挥madVR强大的功能,我们就再继续看下去。
到MPC-BE(小烧注:MPC-BE播放器,其余支持滤镜的播放器也可以)里的选项>视讯底下应该可以选择madVR了
播放影片时,右键>筛选器,底下选择madVR可以打开madVR的设定页,或是右下角的工具栏madVR图示上点右键并选择"Edit madVR settings",或是直接按Ctrl+S,或是在外挂滤镜里加入madVR并点两下都可以打开设定页
打开设定页,并将项目展开:
"devices"底下为目前连接的屏幕,目前显卡抓到几个这边看到的就是几个,将屏幕底下的项目展开可再针对各个屏幕做设定
第一个要先选择屏幕的种类,我想应该不用多做解释了,是哪种屏幕就选哪种,一般液晶/电浆/OLED屏幕或电视选择"Digital Moniter/ TV"即可,如果是投影机则选择"DigitalProjetor"
到"properties"这页,选择该屏幕的output level,一般而言计算机屏幕选0-255,电视的话选16-235,不过有些较新的电视也接受0-255的讯号,这边注意电视的设置与madVR的设置要一致,否则有些色阶会被切掉,俗称黑位错误。(显卡控制接口上的设置则一律设为"由应用程序决定"即可,madVR会决定最后输出的output level)
详细可参考我的另一篇:浅谈HTPC与颜色管理─绪论与前置作业(1/4)
而bitdepth的选择,这边可以维持预设的"auto"让madVR自行判断即可。
如果屏幕是原生8bit(16.7百万色)或更高,或6bit dither(抖色)处理后有办法完整显示16.7百万色,则选单里可选择8bit;如果屏幕是6bit dither(抖色)成8bit且只能显示16.2百万色的话,且屏幕自身的抖色效果不佳的话,选单里可选6bit或7bit,madVR会增加抖色(dithered)输出的强度,色阶过渡会比较好点(但会增加一些噪点),一般而言TN面板的LCD屏幕6bit抖色的居多,IPS/VA面板比较有可能是原生8bit或以上。
至于10bit输出,除非能完全确定屏幕能够接受10bit讯号输入并且显卡驱动程序也能够输出10bit,才去选择这个选项,如果不能100%确定,那还是建议选择8bit输出,madVR的dithered 8 bit输出的效果跟10bit输出其实差异很小,实际观赏时肉眼几乎难以查觉差异。
另外需注意,10bit输出,只有在D3D11 的FSE(全屏幕独占)模式下(这是general serttings那边的设定)或是win10操作系统下的窗口全屏幕模式才能达成(不过目前排除了NV卡,因为其驱动以此法输出10bit会有造成banding的bug出现,故NV卡目前除了FSE模式外都是强制输出8bit)。
如果你无法确定你的屏幕要选择哪种bit数,请自行用灰阶影片来测试,看选择哪一个bit数的色阶过渡效果最好,色阶断层(banding)最不明显,那个就是最适合你的屏幕的bit数设置。
另外关于6bit以下的选项,那些只是给你做dither算法的测试时使用的,不要做为常驻选项
关于dither这技术的原理可参考此篇文章
http://www.ptt.cc/bbs/LCD/M.1374130301.A.402.html
3D format这项,在观看3D影片时才有作用,一般设为auto就好,如果显示设备接受特定的3D显示形式才需要去切换
到"calibration"这页,可以看到四个选项,一般屏幕如果没有经过校色器校色过或是不确定色域的话可维持选第一项"disable calibration controls for this display"就好了,最下面那个"disableGPU gamma ramps"如果没有校色过的话就不要勾选
如果该屏幕经过校色器校色过或是屏幕有色域选项而且其出厂标准可以信任的话,可以选第二项"this display is already calibrated",gamut跟 gamma就依校色时的条件去选择
第三项"用yCMS校色"跟第四项"用3DLUT檔校色",一样需要有校色器的配合,yCMS是将校色过后的三原色跟灰阶信息自行输入,而3DLUT则是用校色后的信息产生一个独立的3DLUT档来使用,目的都是为了能让片源配合屏幕及环境光源状况达到最正确的输出,能够呈现影片制作者原本要表达的画面,而不会因为显示器和传输媒介的个别差异而被扭曲得乱七八糟。后面两项使用的话显卡内存必须要有至少1GB以上,因为这两项功能会建立Lookup tables,会占用大量的显卡记忆空间。
有兴趣的朋友可先参考此网址:
http://www.avsforum.com/t/1471169/madvr-argyllcms
目前由于ArgyllCMS和dispcalGUI的两位开发者都把madVR加入支持,所以已经有一套很完善而且简单的校色流程,只需要去租用一个校色器(建议是光谱仪 colormunki photo、colormunki design或i1 pro之类的),照上面网址教学操作很简单就能完成,做出必要的3DLUT檔。
当然校色的领域博大精深,其中有不少的know-how,所以也请原谅我的无限期拖稿,等小弟玩出些心得会再另发专文分享。
到"display modes"这页,这部分是在播放影片时实时改变显示模式用的,可选择播放时改变或是全屏幕时再改变,然后再选择结束播放或是结束全屏幕时要不要改回来。这部份的功能是在显示设备有支持多种显示模式时使用的(像有些电视或投影机有24P输入模式,或要在59Hz和60Hz之间切换),可让其配合影片更改屏幕更新率或是分辨率,若屏幕没支持的话这部分不用勾选。
解释一下选项:
switch to matching display mode...(启用播放时切换显示模式)
...when playback stars (只要开始播放就切换)
...when media player goes fullscreen (只要全屏幕播放时才切换)
restore original display mode...(结束播放时切换回原来的显示模式)
...when media player is closed (播放器关闭时才切回去)
...when media player leaves fullscreen (只要退出全屏幕就切回去)
注意要使用自动切换功能,必须在下方的"list all display modes madVR may switch to:"底下那个空格填入屏幕能使用的显示模式,没填的话就没有自动切换作用。
以我的panasonic电视为例子来说,它的更新率在1920*1080下支持23Hz(实际约23.976附近)、24Hz、29Hz(实际约29.970附近)、30Hz、59Hz(实际约59.94附近)、60Hz这六种,将其输入可以让madVR更精确的切换电视屏幕更新率以对应不同帧率的影片,以上面例子来说,我会在字段输入1080p23、1080p24、1080p59、1080p60这四种(29Hz跟30Hz没必要,因为用其倍数的59Hz跟60Hz来显示更好),1080p23对应帧率23.976 fps的影片,1080p24对应帧率24 fps的影片,1080p59对应帧率29.970和59.940 fps的影片,1080p60对应帧率30和60 fps的影片。
当然这些只是举例,如果是用2K或4K屏幕的话,前面请自行换成1440p__或2160p__
另外有个"treat 25p movies as 24p"这功能要配合Reclock使用,目的是让欧规PAL25p的影片能够降速到24p去配合24p的显示模式,如果没有在看欧规影片的话这部分也不用理会。
而"hack Direct3D to make 24.000Hz and 60.000Hz work"这个选项,在系统是win8.1或win10时才有作用,win8.1和win10,有时候会发生屏幕更新率无法在需要时(要对应24fps或60fps影片时)变更成24Hz和60Hz(屏幕更新率会锁在23.976Hz或59.940Hz),这个选项可以解决这个问题,但可能有个副作用是会造成presentation queues填不满,所以依个人需要决定要不要勾。
此外,"display modes"这页的设定还有另一个分页"custommodes",这是madVR的另一项有用的屏幕更新率自定义及微调功能,详情请参考我的另一篇介绍文章:
系列番外篇之3─是时候抛弃Reclock了? madVR屏幕更新率微调功能简介与实作
到"color & gamma"这页,如果方才的"calibration"那页里面选择的是第一项"disablecalibration controls for this display",gamma是预设为purepower curve 2.2,这时勾选"enable gamma processing"并设定为pure power curve2.2的话不会有任何改变,如果设为其他值才会改变gamma
"calibration"这项如果有设定,举个例子,假设我设定gamma为BT.709 1.8,这时不勾选或是勾选"enable gamma processing"并设定为BT.709 1.8的话都不会有任何改变,但如果设为其他值就会改变gamma的输出
现在回到为什么要改变gamma输出的问题,主要是为对应校色时跟你实际观看的环境的差别,例如你的屏幕可能是在暗室校色为gamma2.4,那么在同样的暗室观赏,不用去动gamma值就可以看到影片中的亮部跟暗部细节,但是你如果把同样的屏幕拿到明室中来观看,因为人的眼睛会根据环境光线调整瞳孔大小,所以这时一样的设定可能会让你看不到影片中的暗部细节,这时就要把gamma降到2.2或是更小来输出,才能得到同样在暗室观赏的效果,但madVR不会知道你在哪种环境底下来看影片,所以才需要"enable gamma processing"这项来手动更改gamma输出
如果是用校色器校色,而且你看影片的环境光线跟校色时选用的gamma曲线能够配合的话,那就不需要勾选"enable gamma processing"来修正gamma值了。
这边我还是假设各位是未校色的屏幕并且"calibration"那页里面选择的是第一项"disablecalibration controls for this display",那么此处建议底下选择"purepower curve",gamma值一般正常预设2.2,不过可依环境光源来做调整,较暗的环境中,可增加gamma值到2.4,全暗环境甚至可到2.6,如此可看到较细微的阶调变化;在较亮的环境中,就必须减少到2.0或更低,否则就会看不到暗部细节,不过个人建议还是先设2.2,实际播放影片时再依当时环境用热键做暂时性的微调就行了。
另外注意到上方有手动颜色控制,可调整对比、亮度、饱和度,色调的部分,这个一般不用去改,有需要再去调就好了(屏幕方面,我比较建议先调屏幕自身的控制面板,之后不满意再来调这个地方)。
另外总结一下目前madVR可以做手动颜色控制的地方有三个:
在madVR选项里的"device"下的"color & gamma",针对每个屏幕个别调整,也就是上面的那个。
热键设定里有一堆开头"source"的项目,可建立热键,在播放影片时随时用热键调整,调整结果不会被储存。
播放软件的调整接口,效果同1.,不过调整结果对所有屏幕都会有作用,如下图:
到HDR这页
如果你没有观看HDR(High Dynamic Range)影片的需求的话这边设定可以不用去管它,它对于SDR(Standard Dynamic Range)的影片是没有任何影响的,而我们目前观看的绝大多数影片都是SDR的,目前只有一些非常新的4K影片会采用HDR这项技术,HDR影片通常会是BT.2020色域、10bit色深。以下简略解释各选项
"let madVR decide",全部交给madVR自行判断,如果屏幕支持HDR的话,madVR会送HDR 影片和metadata的讯号给屏幕(同第二项"passthroughHDR content to the display");如果屏幕不支持HDR的话,madVR会使用 pixel shader math把HDR影片转成SDR讯号送出(同第三项"convert HDR content to SDR by using pixel shader math",但效果等同第三项未勾选"restoredetails in compressed highlights",转换后细节损失比较多,故屏幕不支持HDR的话我建议直接选择第三项)。
"passthrough HDR content to thedisplay",将HDR内容和metadada不经处理直接送给屏幕,须注意选择此选项屏幕必须完整支持HDR内容播放,屏幕不支持HDR这选项就没有任何意义。madVR在v0.91.11之后版本才能完整使用这个选项的功能,支持两种API将影片的metadata传送给电视去辨识。一种是NV或AMD卡专用的HDR API,必须搭配新的驱动,好处是win7、win8.1、win10皆可使用;另一种是win10内建的D3D11/DXGI APIs.,这个每家显卡都可用,但只有win10下能用,播放时必须使用D3D11模式。("calibration"设定里有3DLUT档的话会绕过)
"convert HDR content to SDR by usingpixel shader math",选择此选项会将HDR之内容妥善转换成SDR内容后输出给一般SDR屏幕使用("calibration"设定里有3DLUT档的话则会接在后面套用),如果屏幕不支持HDR的话我建议选择此项。
"convert HDR content to SDR by usingan external 3DLUT",选择此选项则须利用校色器跟软件建立HDR→SDR转换的3DLUT给它使用,转换后输出SDR内容给屏幕("calibration"设定里有3DLUT档的话会绕过)
"process HDR content by using pixelshader math",输出HDR内容给屏幕,选择此选项屏幕也必须支持HDR播放,但是是由madVR来处理色域跟亮度的转换,例如电视支持HDR,但是色域是DCI-P3的case("passthrough HDR content to the display"那项则是由电视本身处理色域跟亮度的转换),有时候电视本身没办法很好的处理HDR内容的色域跟亮度转换时就适合选择此项。("calibration"设定里有3DLUT档的话会绕过)
"process HDR content by using anexternal 3DLUT",选择此选项则须利用校色器跟软件建立HDR→屏幕色域转换的3DLUT给它使用,选择此选项屏幕也必须支持HDR播放。("calibration"设定里有3DLUT档的话会绕过)
以下以第三项"convert HDR content to SDR by using pixel shader math"为例说明下方之子选项:
"target peak nits"
可设定范围是120~10000,HDR影片使用的亮度范围是0~10000 nits,它必须有一个支持HDR的显示器才能正常显示(当然还有显卡也要支持),而一般SDR的显示器最大亮度大概在80~300 nits(例如我的电浆电视校色后最大亮度设定在120nits),在SDR显示器上播放HDR影片是没办法显示正确亮度的,需要经过色调映射(tone mapping),这个选项就是让你设定HDR影片转换后的亮度,让HDR影片可以在SDR屏幕上正确显示,不过并不是屏幕亮度设多少这选项就一定要设多少,还必须实际播放测试后去找出最适合的选项。这边设置的数值越低,亮度中间值会拉越高(整体画面越亮),数值越高,亮度中间值拉越少(整体画面越暗)。像我的电视亮度实际大约120nits,但是这一选项我设定在200nits看起来效果比较好。
"tone maping curve"
设定色调映像用的曲线,建议选择默认的BT.2390。
"gamut mapping algorithm"
影片里大于屏幕色域的画素,如果什么都不做的话,色彩坐标超出的部分会被剪除(例如一个画素RGB为50,320,40,屏幕255,255,255,则该画素显示时会变成50,255,40),会造成hue(色相)跟原本的产生差异,颜色会偏移,因此较好的做法是透过降低亮度或降低饱和,等比例去分配RGB值,以求在屏幕色域能显示的范围内尽量让hue保持不变。此项是选择色域转换所使用的算法,不同的算法设定会造成转换后的颜色呈现有些微的差异,有兴趣的话可慢慢测试不同设定,不然建议先维持默认选项即可。
"fix too bright & saturated pixelsby:"
luminance reduction(降亮度)、saturation(降饱和),要用哪个则是个难题,有些HDR片源适合降亮度,有些适合降饱和,这边建议维持预设"dynamic luminance & saturation reduction",让madVR自行判断并做动态调整。
"measure each frame's peakluminance"
勾选这项会让madVR自己计算每一帧的巅峰亮度值,虽然这项信息HDR metadata里面有但未必是准确的,因为只有单一数值,而每个帧的亮度是一直变化的,实时测量才能让madVR达成更精确的亮度转换(tone mapping)
"restore details in compressedhighlights"
在压缩高亮度区域的数值时,因为数值会非常接近,可能导致该区域的细节遗失,勾选此选项的话,会在需要时透过锐化的方式让细节比较容易保留下来
"activate anti-bloating filter"
AB滤镜,因为上面有用到锐化故建议勾选
"activate anti-ringing filter"
AR滤镜,因为上面有用到锐化故建议勾选
此外,关于HDR metadata输出通道,做一些补充说明:
1.Windows 10 Creator's Update底下的屏幕设定里面有个选项叫"HDR and advanced color"(不太确定中文版翻成什么),关掉的话屏幕永远跑SDR模式,开了的话有HDR的屏幕永远跑HDR模式,Windows目前无法根据使用者是否跑HDR影片或HDR游戏而自动把屏幕在SDR或HDR模式之间切换。
2.关掉"HDR andAdvanced Color" 这选项的话PC永远会送SDR内容给屏幕(使用A或N卡自身的HDR API时例外,见第4.项),这时候如果用madVR播放HDR影片并选择第一项"passthrough HDR content to the display",如果是Intel内显,OS/GPU会自己做一个质量比较低的HDR-> SDR 转换,这时候HDR影片看起来还是OK的,但质量差强人意。SDR影片则不受影响,仍然是完美的。
3.打开"HDR andAdvanced Color" 这选项的话PC永远会送HDR内容给屏幕(使用win10内建的API),这时候madVR选择"passthrough HDR content to the display"的话,播放HDR影片时是完美的,但播放SDR影片时,OS/GPU会自己做SDR ->HDR 转换,这时候SDR影片看起来还是OK的,但质量称不上完美。非影片的部分,像桌面跟网页那些,也可能造成颜色异常。
4.Nvidia和AMD 自己的HDR API解决了上面提到的无法自动切换HDR跟SDR的问题,N卡和A卡使用者只要把win10的"HDR and Advanced Color" 这选项关掉,madVR就自动会使用显卡自己的HDRAPI,如此一来就可以自动切换屏幕的SDR和HDR模式,让SDR和HDR影片都可以的到最完美的播放效果。
5.N卡驱动建议更新到390.65之后版本,太旧的会不支持显卡自身的HDR API或是有bug。
6.AMD的HDR API限制较多,只能在10bitD3D11输出模式下使用,而且必须在全屏幕下才能使用,N卡的HDR API则无此限制。
7.除非A卡或N卡的HDR API无法正常运作,不然非常不建议去开win10自身的HDR选项。
|