最近两年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视频的精彩之处吧。

播放HDR视频需要注意什么相关推荐

  1. 使用madVR或mpv软件转换HDR视频至非HDR设备播放

    PotPlayer播放HDR视频截图 PotPlayer播放HDR视频截图 Windows10内置视频播放器播放HDR视频 Windows10内置视频播放器播放HDR视频 从去年开始,支持HDR的电视 ...

  2. HDR视频能不能在非HDR屏幕上播放呢

    不少朋友尝试过在非HDR屏幕上播放HDR视频发现会变灰吧,另外4K显示1080和1080屏幕相比有没有差别呢? 实际上这里面水可深得很.HDR和非HDR是两套亮度/色度体系,就像是语言体系上的差别那么 ...

  3. 如何在PC上正确播放4K HDR视频--有惊喜

    现在4K UHD HDR规格的影视剧片源真的越来越多了,如果你是个下载党,或者朋友丢给你个NET Flix最新剧集,一看是4K HDR,欣喜若狂,当然第一步是如何分辨这到底是不是一部真正的HDR视频, ...

  4. FFmpeg HDR视频转SDR视频命令

    之前蓝光盘电影多是AVC 1080p 8bit SDR格式视频,近两年4K电影流行,下载的蓝光电影多是HEVC 2160p 10bit HDR视频格式. ffprobe查看有如下属性: # 10bit ...

  5. 微博HDR视频的落地实践

    点击上方"LiveVideoStack"关注我们 社交平台以日渐成为我们日常生活中不可或缺的一部分.从文字.语音再到视频,用户对社交平台中的视频类信息越发依赖,这也促进了视频体验优 ...

  6. iOS播放与编辑HDR视频

    在iPhone12发布后,支持使用Dolby Vision来录制HDR视频.至此,升级到iOS14.1系统后,已经支持录制.播放.编辑和导出HDR视频.接下来,让我们一起探索HDR视频的各种操作. 一 ...

  7. linux 播放 4k 视频,高通 S845 能录制 4K HDR 视频,但有哪些设备能看到呢?

    Screenshot, UHD Alliance 高通发布了新世代 Snapdragon 845 SoC 后,大家可能都会留意到它支持录制 4K HDR 视频的能力,让大家用手机拍摄视频时也能有着更鲜 ...

  8. HDR视频到SDR的转换过程,及部分设备对HDR视频的播放现象

    目录 HDR是什么 不支持HDR的屏幕真的一点都不HDR吗? SDR屏幕是怎么播放HDR内容的 部分移动设备上 总结 HDR是什么 高动态范围,对视频或图片来说指文件相比传统0~100nit(或cd/ ...

  9. HDR视频生态圈追踪

    截止目前,HDR视频生态圈已经产生了巨大的变化.本文将更新旧有的HDR生态圈范围,并更清晰地描述当前HDR视频生态圈.本文译自The HDR video ecosystem tracker,原作者为 ...

最新文章

  1. 专业的秘密 | 南方医科大学生物信息学专业
  2. BUUCTF(misc)变异凯撒 --二
  3. Python学习笔记 setdict
  4. 绝非偶然 苹果iPhone领先5年背后的迷思 【推荐】
  5. python日历下拉框_python日历来计算月份倒退
  6. 在java中图片随机播放_如何在Java中随机播放列表
  7. matlab title多个标题_MATLAB中的直方图处理及均衡化
  8. 脚本自启动oracle,自动启动和关闭Oracle 脚本
  9. nextJS和vueJS及Material-UI 简易搭建
  10. mac 安装android sdk
  11. 软件测试技术体系-专业术语
  12. php系统变量有哪些,php预定义系统变量
  13. 以太坊基础开发入门教程,完整入门【转】
  14. 网页特效php代码大全,网页特效代码
  15. 【互亿无线】语音短信多少钱一条?
  16. MATLAB零基础入门教程视频课程
  17. omnet++ 中tictoc10-12学习笔记
  18. CodeWarrior使用教程第一部分: 认识 CodeWarrior
  19. 用 dfuse Lifecycle 保证你的交易被推送上链
  20. 电池充放电1c指的是什么

热门文章

  1. Golang 提取视频中音频,存为WAV格式 | Golang工具
  2. 数码相框方案_索尼NEX5评测:具有视频功能的数码单反相机
  3. 【深度学习】梯度下降算法和随机梯度下降算法
  4. url包含html标签,正则表达式从文本解析URL(文本包含HTML标签)
  5. Yapi环境搭建及使用
  6. java 使用正则去除字符串首尾两端指定的字符
  7. java 内存 溢出_java内存溢出的几种原因和解决办法是什么?
  8. Sketchpad正版不是从试用版出来的
  9. 传统方法的pcb缺陷检测
  10. 【案例】华为桌面云助力中国银行打造高效研发开发平台