最近两年HDR这个概念可谓是铺天盖地而来,手机也好PC也好电视也好,都拼命往自己头上扣HDR的帽子。而在某些发烧友眼中,如果看片子不带HDR,堪比步兵变骑兵,一下子变得索然无味。然而,新事物往往也伴随着众多新坑,特别是在软硬件环境复杂的PC平台,稍有不慎就会摔得脸青鼻肿,播HDR的效果甚至不如播普通的片子。
PC播HDR的大坑有几何?PC并不是专门为视频播放设计的机器,和专业的蓝光机等播放器相比,无论是在解码还是渲染还是输出方面,在没有一套一键式安装的成熟方案(傻瓜万能播放器等)出现之前,往往需要用户自己手动详细配置每个环节。硬件方面的环节,例如HDMI线缆版本等等,以往已经说得比较多了。今天,就一起来谈谈软件方面播放HDR视频需要注意什么吧。
正确处理YUV和RGB色彩
如果你有留意过视频文件的参数,应该会知道视频的色彩编码有不同的类型,最常见的莫过就是YUV和RGB。这到底都意味着什么呢?在数字时代,要让计算机能辨认出自然界的颜色,就需要对颜色进行编码。在RGB体系中,颜色是用红、绿、蓝三种参数来表示的,例如在PhotoShop中我们可以看到纯红色的编码是(255,0,0)。
PhotoShop支持多种色彩空间,例如RGB、CMYK等
RGB并不是唯一颜色编码的方法,颜色不仅仅可以用红绿蓝来混合显示,还可以用明度、色度和浓度来表示,这种明度色度浓度的颜色编码方式就是YUV了。或许有的朋友会问,RGB效果就很好,现在连机箱里面的光污染都用RGB灯,为什么颜色的编码要搞这么多套体系?这和显示介质是息息相关的。
在PC上我们用的电脑屏幕是液晶屏或者OLED屏幕,发色基础是RGB三原色像素点,于是配合RGB的色彩空间,能够比较完美地将数字信号转换成为可见光。但在电视机上,RGB就不一定适用了。和电脑显示器相比,电视的历史更悠久,古老的电视例如黑白电视,显然是无法兼容RGB信号的。如果使用的是YUV色彩空间,情况就不同了,黑白电视只需显示YUV色彩空间的明度信号即可完美兼容。由于这个历史原因,视频特别是源于光盘、广播电视信号的视频,基本上都使用YUV色彩空间,直到今天也依然如此。
配合电视工作的设备,一般支持输出YUV,例如PS4
现在的HDR视频不少都来源于UHD BD光盘,因此将YUV信号转换成为RGB信号,也成为了HDR视频播放当中必不可少的一环。但遗憾的是,Windows自带的EVR渲染器(Enhanced Video Renderer)在这方面的表现不怎么理想,如果解码器输出YUV信号到EVR进行渲染,那么EVR只会进行低精度的转换,大大影响画质。HDR视频的色彩较为丰富,负面影响尤为明显。
要如何来解决这个问题呢?有两个思路。
第一个思路,让解码器只输入RGB 8bit信号到EVR中,不让EVR参与YUV→RGB的转换。我们需要借助LAV解码器来实现这点。
视频播放器要播放一个视频,流程通常是视频分离器(分离视频流、音频流、字幕等)→解码器(解码视频、音频)→渲染器(渲染出最终图像),YUV转换成RGB这一步,可以发生在解码步骤当中,也可以发生在渲染步骤当中。既然渲染器不给力,那就让解码器来做。
LAV是目前PC上最强劲的解码器,可贵的是它是开源免费的。我们可以点此进入LAV的GitHub项目中下载相应版本,可以下载安装包也可以下载ZIP包的绿色版。
按照实际情况和个人喜欢选择最新版即可
如何让播放器使用LAV解码?以PotPlayer为例,在PotPlayer的“全局滤镜优先权”一栏,添加系统滤镜或者外部滤镜(取决于你使用LAV安装包还是绿色版,下文以绿色版为例)。将LAV绿色版压缩包解压到一个文件夹,目录不要含中文,添加当中的“LAVVideo.ax”就可以添加LAV视频解码器了。
找到PotPlayer的“全局滤镜优先权”
添加“LAVVideo.ax”为外部滤镜
接着,将PotPlayer当中的“LAV Video Decoder”设置为强制使用,双击进入设置。
选择“强制使用”
可以在“Output Formats”一栏看到各种输出格式。这时候只勾选RGB32、RGB24两个即可,其他都取消勾选。保存设置,如此一来播放器解码的时候就只会输出RGB 8bit信号,EVR渲染器就不会做低质量的转换处理了。
只保留8-bit的RGB输出
第二个思路,就是换用更好的渲染器,例如madVR。madVR是PC上画质最好的视频渲染器,可以高质量地处理YUV→RGB转换。关于madVR渲染器的使用将会在下面提到,这里先不详细展开。
如何顺利解码10bit
如果大家有留意,应该会发现很多HDR视频的色深都是10bit。现在流行的视频普遍以8bit居多,10bit视频对比8bit,灰阶更加平滑,同样画质的视频体积更小,但与此同时解码所需要的性能也提高了不少。
10bit对画质的提升是有正面意义的,为什么HDR视频会使用10bit?这主要还是因为蓝光联盟的推动。HDR视频之所以流行,是由于在2015年蓝光联盟正式确定了UHD BD的规格,之后两三年越来越多的片子推出了UHD BD碟片。而UHD BD内的片子规格有几个关键点,分别是H.265(HEVC)的编码,10-bit色深以及HDR色彩(高达BT.2020色域)。因此,10bit色深这个规格越来越多地出现在了各种视频当中。
一个典型的原盘HDR视频,参数包括HEVC编码、10bit色深、BT.2020色域、YUV 4:2:0色彩空间
如果你的CPU足够强劲,那么可以使用软解来播放10bit视频,和硬解相比这也更不容易出错。但是如果你觉得视频卡顿,恐怕就需要考虑硬解了。如何才能正确硬解10bit视频?首先得判断显卡是否有能力支持10bit视频的硬解。
硬解和GPU相关,先来说说NV方面。NV的硬解技术为PureVideo,要比较好地解码4K HEVC 10-bit视频,需要PureVideo VP7或以上规格的技术。那么有什么NV显卡支持这个规格呢?到了帕斯卡这一代,包括GP102、GP104、GP106、GP107、GP108核心,全部都配备了PureVideo VP8,硬解4K HEVC 10-bit视频无压力;但上一代就比较诡异了,只有GM206(包括GTX 950、GTX 960)支持PureVideo VP7,其他都只支持VP6。
GTX 900系列只有GTX 950、960支持4K HEVC 10-bit硬解,GTX 1000系列全支持
再来说说AMD的GPU。AMD GPU的硬解技术是UVD,只有UVD 6.3或以上的版本,才能够硬解4K HEVC 10-bit视频。AMD的独显目前只有RX 400系列、RX 500、Vega系列有能力硬解,以及Stoney Ridge之后的APU可以硬解。
Intel的GPU硬解技术是Intel Quick Sync Video,只有Broxton(最新一代Atom,已停产),以及Kaby Lake(第七代酷睿)及更新的产品线能够硬解4K HEVC 10-bit视频。
Intel只有Kaby Lake之后的产品可完美硬解4K HEVC 10-bit视频
除了看型号,还有一个最简单的判断GPU是否可以硬解4K HEVC 10-bit视频的方法——使用DXVAChecker这款小软件即可。如果看到“HEVC_VLD_Main10”一栏中有显示“4K”或者“QFHD”,那就说明GPU可以硬解4K HEVC 10-bit视频。
DXVAChecker,可检查硬解的支持情况
接着,需要正确配置解码器,这里仍以LAV解码器为例,这是目前能比较好地解码10bit的解码器。在LAV解码器当中,可以在“Hardware Acceleration”处选择硬解方式,目前常用的一般是两种硬解,一种是“DXVA2(native)”,另一种是“DXVA2(copy-back)”。
如果软解性能不够,需要硬解,推荐使用DXVA2 copy-back
这两种硬解的区别在于,native会把数据完全交给GPU处理,而copy-back会多出一个回传到内存给CPU处理的步骤。从效率的角度来说,native会更高一些。但是,如果要硬解10bit视频,并不推荐使用native。
一来,使用DXVA native硬解,某些GPU解码可能会出现问题,例如AMD RX显卡用native解码10bit可能会出问题,但NV的GTX10X0就不会,你很难判断到底某显卡用native解码能不能正常工作,用copy-back大家都是没问题的。二来使用native解码会强制使用YUV输出(在LAV设置了RGB输出也不行),如果使用EVR渲染器画质会比较差。
因此,如果你想要用显卡硬解10bit视频,那么推荐使用LAV解码器当中的DXVA2 copy-back硬解方式。如果性能足够强劲,还是推荐使用CPU软解,最不容易出错。无论哪种硬解,都只对色彩空间是YUV 4:2:0的视频有效,遇到YUV 4:4:4之类的高规格还是会软解的。与此同时,如果用madVR渲染的话还要注意版本,madVR在0.9之后的版本才开始支持DXVA YUV 4:2:0的10bit解码输入。另外,软解虽然费CPU,但也可以把更多的GPU资源留给madVR渲染器,以获取更高的画质,因此如果CPU性能够强,还是软解更合适。
播放HDR如何才能不偏色
BT.2020 HDR色域转换BT.709 SDR色域
前面说到,HDR视频的色域是BT.2020,这是一个广色域。色域越广,色彩往往越丰富,因此HDR的片子往往会艳丽很多。但是,现在的电脑显示器未必都可以支持BT.2020色域,绝大多数的显示器只能支持色域BT.709(SDR级别色域)。此情此景下,如果直接播放HDR视频,那么色彩甚至会比普通的视频更加黯淡。要怎样才能获得比较好的效果?色域的转换处理必不可少。
直接在SDR屏幕播放HDR视频,会非常黯淡
经由精确的色域转换后,色彩才会变得正常
要让HDR视频在普通屏幕上也变得明亮鲜活,需要将BT.2020色域进行精确转换,而不是简单粗暴砍成BT.709。这时候,渲染器所起到的作用就相当关键了。怎样的渲染器才能比较好地进行色域转换处理?madVR是最好的选择。
madVR是PC平台上最好的视频渲染器,没有之一。在比较早的时候,madVR已经加入了BT.2020色域转换的选项;而在近期版本,madVR还出现了专门的“HDR选项卡”,在当中就可以设置将HDR色域处理成普通的SDR色彩了。
在官网下载madVR即可,可以看到它支持众多播放器,这里仍以PotPlayer为例
我们首先需要把madVR设置为播放器的渲染器,这里仍然以PotPlayer为例。madVR目前只有绿色版,点此进入官网下载,之后将madVR解压到一个文件目录当中。在PotPlayer“全局滤镜优先权”一栏添加外部滤镜,接着添加madVR目录当中的“madVR.ax”或者“madVR64.ax”(取决于系统是否64位),然后将madVR设置为强制使用,双击进行配置。
强制使用madVR作渲染器
在madVR“devices”当中,可以看到当前的显示器,然后展开显示器的菜单,可以看到“hdr”选项。如果你的显示器是非HDR的,那么选中“convert HDR content to SDR by using pixel shader math”即可。如果你信得过软件自动识别,那么也可以选择“let madVR decide”,一般情况下还是靠谱的。
madVR可以较好地处理色域转换,不想折腾选择自动即可
这里可以讲一下madVR这里几个关于HDR色域转换的选项,其他选项在什么情况下用得着?如果你用的是支持HDR的屏幕,例如某些电视机或者高端显示器,那么可以选择“passthrough HDR content to the display”,这样会直接把HDR不经由转换,原封不动地进行输出。而如果你用的是广色域屏幕但色域不是BT.2020,例如色域是Adobe 99%的设计专用屏幕,可以选择“process HDR content by using pixel shader math”,这样HDR色彩会经过转换处理,显示更加准确。
而如果你的屏幕经过校色仪校准,并且让校色软件(例如DispalyCal)生成了3DLUT校色档案,并且校色软件支持将其输出到madVR当中,那么可以选择选项后带有“using an external 3DLUT”的选项,一般情况下就不要选了。
HDR显示器直接播放HDR真的没问题吗?
前面提到,madVR是支持输出HDR信号的,如果你的显示器支持HDR,那么是不是就应该让madVR输出HDR?并不一定!虽然很多显示器支持HDR,但效果并不好,贸然使用HDR输出,画质甚至不如将HDR转换为SDR再输出好。
不是所有HDR显示屏都有足够的亮度去实现好的HDR效果的,300cd/m?不到的亮度效果可想而知
现在某些显示器声称支持HDR,但亮度等关键参数并不出彩。如果使用这些设备放映HDR视频,往往会自动切换到HDR模式,反而造成亮度下降、偏色等一系列问题。因此,这类较低端的HDR屏幕使用转换过色域的画面,效果反而会更好。
不仅如此,在HDR模式下可能还会严重偏色,还不如将HDR视频转换为SDR后再播放效果好
毫无疑问,用madVR来处理HDR色域转换是必不可少的方案。而使用madVR还有一个好处,那就是它能够精确地进行YUV和RGB色彩空间的转换。就算解码器输出的是YUV信号,也能够转换成为高质量的RGB信号,比Windows的EVR不知搞到哪里去。madVR唯一的缺点就是比较吃GPU资源,如果你的硬件足够强劲,用的是目前主流的显卡,那么madVR值得强烈推荐。
声道:杜比全景声映射为双声道立体声
说了不少和画面相关的内容,再来说说声音相关的吧。如果HDR视频源自UHD BD,那么往往还会带有多声道。特别是杜比视界HDR,基本上都是和杜比全景声搭配的。如果直接播放这类片子,而输出设备只是普通的2.0、2.1音箱甚至只是耳机,那么声音可能就会出现破音等失真的情况,这又是一个很多人不曾注意的坑。
HDR视频往往搭配多声道,直接用耳机播放可能会出现破音、干音等失真
怎么办?其实LAV滤镜也提供了解决方案。仍然以PotPlayer为例,将“LAVAudio.ax”添加到PotPlayer当中并设置强制使用,然后双击“LAV Audio Decoder”进行配置。
添加LAV Audio Decoder并强制使用
点击“Mixing”选项卡,这里面的功能是和混响相关的,可以将多声道混响为双声道的立体声。勾选“Enable Mixing”,并选择“Stereo”,然后确保“LFE Mix Level”数值为0即可。如此一来,就算用双声道的音箱、耳机播放环绕声的HDR视频,也不会出现破音等情况了。
设置将声音混响为双声道立体声
AACS 2.0:正版HDR输出需要SGX
前面提到,不少HDR视频都是源自于UHD BD,因此一些发烧友也会直接购买正版的UHD BD碟片观看。但是,如果用电脑配合UHD BD光驱来播放正版HDR影片,需要讲究的地方也不少,一不小心也会掉到坑里面。
首先,播放软件不能使用PotPlayer这样普通的播放器了。正版的UHD BD带有AACS 2.0防盗版技术,需要经由认证的软件才能播放。目前只有正版的PowerDVD才可以播放UHD BD,破解版的无法播放。这个软件并不便宜,支持UHD BD的版本售价为580元人民币。不过购买某些UHD BD光驱,可能会获赠这一软件,大家可以留意厂商活动和产品说明。
要播放正版UHD BD,需要正版PowerDVD
其次,要播放正版UHD BD光盘还需要CPU支持SGX。该技术是英特尔特有,而且只存在于部分Kaby Lake以及Sky Lake之后的CPU中(点此查看支持SGX CPU列表 ),AMD所有平台、英特尔的X99等其他平台的CPU一律无法播放版权限制的UHD BD。要看正版4K HDR蓝光碟,A饭是当不成了。
正版UHD BD需要CPU支持SGX
总结
HDR视频日渐流行,但距离全面普及显然还有一大段距离。现在使用电脑播放HDR视频仍需要细心料理每一个环节,效果才能比较令人满意。希望有越来越多成熟方案出现,有朝一日大家都能轻松感受到到HDR视频的精彩之处吧。