现在,主流显卡都已经具备了高清视频硬件解码技术,通过专用的电路来计算视频编码,从而降低处理器的工作量。但是,显卡上的高清解码引擎并不是随时都能够起作用的。有时候,我们还得为解码软件繁复的设置而头疼。现在,一种新的高清解码方式出现了,那就是利用显卡的通用计算能力来对高清视频进行解码。
以往的高清“硬件”解码是指显卡通过加入专用解码电路,降低高清视频播放时的处理器的占用率。比如NVIDIA的PureVideo HD和ATI的UVD 2解码引擎,可以让高清视频的解码工作由显卡来完成,以降低处理器的占用率。以NVIDIA显卡为例,名为PureVideo的视频解码引擎Video
Processor已经发展到了第三代,可以让三种高清视频编码格式都能够实现全程硬件解码。但是,高清视频解码过程并不是这么简单的。系统调用视频解码引擎是通过DXVA(DirectX Video
Acceleration硬件视频加速)接口进行的,极容易因为视频格式不符合规范和设置不正确而导致硬解失败。而且复杂的解码器、分离器、渲染模式设置,也让新手相当难以上手。
今天我们要认识的是如何利用显卡的通用计算能力来对视频进行解码,同样达到高清“硬件”解码的目的。显卡通用计算技术是利用GPU的并行计算能力,来进行科学计算,它的计算能力往往几倍、几十倍于处理器。GPU不仅仅可以实现高清视频的解码,很多计算工作都可以交由GPU来完成。比如视频编码、密码破解、科学计算等,只要软件开发者懂得利用GPU,就能够大幅度地加快计算进程。通常,高清视频播放器如PowerDVD、Media Player Classic Home Cinema等软件要实现H.264的硬解,需要设定渲染模式为VMR9或EVR。同时,由于H.264格式的编码方式较多,并不一定完全符合DXVA硬解的要求,所以有相当部分高清电影是无法实现硬解的。而在CoreAVC软件中, 就已经支持利用CUDA进行高清解码。利用CUDA进行解码的过程就如同CPU解码一样,只是这个计算过程不是由处理器或VP3视频解码引擎,而是由显卡的流处理器来计算完成的。
CoreAVC软件是比较常用的视频解码器,它常常集成在“终极解码”和“完美解码”等软件中,主要用于H.264和X264视频格式的解码。在CoreAVC 1.9版本中加入了对CUDA解码的支持,而1.9.5版本则对上个版本中的一些问题进行了修正。我们在CoreAVC官方网站上看到,要实现CUDA解码对显卡其实是有要求的,要GeForce 8及其以上系列的NVIDIA显卡才行,这也正好是NVIDIA支持CUDA功能的显卡型号。
在安装CoreAVC 1.9.5解码软件的过程中,就可以看到CUDA的说明和设置指导页面。如果选择Use Tray Icon,那么在CoreAVC启用时,会在任务栏里显示CoreAVC的图标,并用颜色来显示
CUDA的启用情况。选择Prefer CUDA accelaration则开启CUDA加速,加速成功,CoreAVC在任务栏里的图标将从蓝色变成绿色。
在播放器中加入CoreAVC Video Decoder。我们在测试时使用的是Media Player Classic
Home Cinema播放器,打开选项菜单中的External Filters,将CoreAVC Video Decoder设置为
Prefer首选解码器。默认情况下,CoreAVC Video Decoder一般已经设置为了首选。
在CoreAVC解码器的设置菜单里,就有第一步指示里的设置选项。在这里就可以勾选“
Preferred decoder”、“Use Tray Icon”和“Prefer CUDA acceleration”三个选项打开CUDA解码。
利用CUDA进行高清视频解码,相比DXVA硬解的方式来说,大的好处就是兼容性更高了。举个例子,如果用DXVA硬解高清,对渲染模式有要求,Windows XP下需要设置为VMR 9,而
Windows Vista下为EVR才行,而CoreAVC的CUDA解码则可以用多种渲染模式。
如果CUDA硬解未开启,那么《CoreAVC》的图标为蓝色,成功开启后,图标变成绿色
除此之外,DXVA硬解高清还配合适当的片源,比如对MKV封装的高清视频就会有兼容性问题。如果片源在压制的时候不符合DXVA规范,那么也无法进行硬件解码。而CUDA解码和处理器解码类似,理论上对片源没有要求,只要是采用H.264编码的高清视频都可以实现硬解。
我们选择了接近20部H.264编码的视频进行测试,播放软件为Media Player Classic Home
Cinema,分离器为Haali Media Splitter,解码器自然为本文的主角CoreAVC 1.9.5。
测试的近20部片源中,包含了Blu-ray remux、BDrip、BDre、DVDrip等多种格式,也包含了
ts、mkv、mov、mp4等多种封装,还包含了1080p、1080i、720p和480p等多种分辨率。我们发现CUDA解码的兼容性非常高,这些视频都能够正常实现CUDA硬解。然后,还选择了不同的渲染模式,发现在Overlay、VRM7和VRM9三种渲染模式下,CUDA硬解都能够正常启用。这样一来,用户在不用自行设定渲染模式的情况下,也能够成功硬解了。
CoreAVC CUDA解码测试 | |||
视频格式 |
CUDA硬解处 |
处理器软 |
DXVA硬解 |
《银河系漫游指南》Blu-ray Remux H.264 1080p.ts |
14.8% |
50.6% |
10.6% |
《变形金刚》Blu-ray H.264 1080p.mov |
9.7% |
16.5% |
1.8% |
《变形金刚》HD DVD Remux 1080p.ts |
19.2% |
52.2% |
10.4% |
《马克思•马努斯》BDre X264 720p.mkv |
6.1% |
16.3% |
N/A |
《深海》BDre X264 1080p.mkv |
10.9% |
37.5% |
N/A |
《深海》BDre X264 1080p.mkv* |
24.8% |
46.7% |
16.1% |
后,我们从处理器占用率方面考察CUDA解码和传统DXVA解码的差异。本次测试使用的处理器是Intel Core 2 Duo E7400,显卡则是NVIDIA GeForce GTX 260+。相对来说,CUDA解码时的处理器占用率要略高于DXVA硬解时的占用率。在《变形金刚》H.264 HD DVD Remux影片中,软解时的处理器占用率为52.2%,而PowerDVD 9 DXVA硬解时的占用率降低到10.4%。如果用CUDA解码,处理器占用率位于软件解码和硬件解码之间,已经能够明显降低处理器占用率,保证画面播放的流畅程度了。由于PowerDVD 9只能对部分格式高清视频解码,mkv封装格式的两段高清视频是无法播放的,所以我们又使用“完美解码”所附带的KMPlayer播放了《深海》。使用“完美解码”时,CUDA硬解和处理器软解两种模式下的处理器占用率都要明显高于单独使用Media Player
Classic Home Cinema和CoreAVC。
单从画质来看,CoreAVC CUDA硬解、处理器软解和PowerDVD 9 DXVA硬解三种模式下的画质相差非常小,画面的细腻程度完全一样。只是在灰阶方面,由于CoreAVC默认开启了0~255灰阶转换,所以画面更靓丽一些。如果在NVIDIA驱动程序里同样打开灰阶转换,那么PowerDVD 9的画面灰阶表现也会有所提升。在CoreAVC 1.9版本中会出现播放时1秒钟的“爆格”现象,而
CoreAVC 1.9.5已经得到了改善。但是我们发现该版本在播放放某些视频片段时,比如《北极传说》X264 a1080、《心灵传输者》X264 720p等X264编码格式视频时,拉动进度条画面切换后,会有一定程度的快放现象,1~2秒后恢复正常。
CoreAVC只是解码器,如果要正常观看高清电影,还需要分离器和播放器。所以在我们之前的测试中,就分别使用了Media Player Classic Home Cinema播放器和Haali Media Splitter分离器。
Media Player Classic Home Cinema是一个免费的播放器,可以外挂字幕,绿色安装。而Haali
Media Splitter则是比较常用的分离器,三种软件同时使用就可以正常播放H.264编码的高清电影了。
我们需要的就是核心的解码器,替换掉原本《终极解码》里的CoreAVC.ax文件即可
但是,CoreAVC仅支持H.264格式,所以要支持所有的高清视频格式,我们还需要其它的解码器。大多数情况下,我们并不会一项一项地安装多种解码器,而是安装“终极解码”和“完美解码”之类的软件包一劳永逸。其实,“终极解码”和“完美解码”里面就集成了CoreAVC解码器。那么,我们可以通过一些简单的方法,将CoreAVC更新到1.9.5版本就能够实现CUDA解码了。
将“终极解码”里的CoreAVC选项选择为1.8.5版本,实际已经为1.9.5版本
“完美解码”20090513版本里,就已经集成了CoreAVC 1.9.5,我们可以在设置中心里直接调用CoreAVC进行设置,打开CUDA加速功能。而“终极解码”已经久不更新,新版本集成的是CoreAVC 1.8.5,就需要我们进行破解,将CoreAVC进行更新。
将必须在KMPlayer的滤镜菜单里才能对CoreAVC进行设置,
点击之后即可出来设置菜单,打开CUDA解码功能
首先在安装好“终极解码”之后,再安装CoreAVC 1.9.5,可以是14天的试用版。然后在
CoreAVC的安装目录里复制出Decoder文件,文件名为“CoreAVCDecoder.ax”。将“
CoreAVCDecoder.ax”更名为“CoreAVC.ax”,复制到“*:……Final CodecsCodecs”文件夹里,覆盖同名文件。在”终极解码设置中心里,在H.264解码器CoreAVC选项上单击鼠标右键,会出现版本的选项。选择1.8.5版本,其实它已经更新为1.9.5版本了。如此设置之后,如果要设置
CoreAVC,不能够在”终极解码“里设置,需要在KMPlayer里面对CoreAVC进行设置。方法是在
KMPlayer的右键菜单里选择滤镜,选择CoreAVC Video Decoder选项就能打开CoreAVC 1.9.5的设置界面。
CoreAVC给我们提供了一种新的解码思路,就是利用显卡的通用计算能力来帮助视频解码,也可以同样达到解放处理器的目的。而且,用CUDA解码对视频格式的兼容性更高,能够硬解的视频格式更多了。只是,CoreAVC还不支持ATI的Stream,以及仅仅在H.264编码格式的软件中实现
CUDA,以上都是目前的遗憾。
你好!请问我已经按照杂志里的设置了,可是在播放H264编码文件时滤镜里没有CoreAVC Video Decoder选项这是为什么?