平常我们所孰知的高清编码无非两种H.264和AVC1,特别是前者在电脑所使用的高清视频当中使用率相当多(这里包括x.264等),而随之而来的也就是广为人知的硬解码问题。毕竟不是所有人的CPU都那么NB,能实现硬解码的话就能流畅的观赏高清视频了。硬解码的方法很简单,网上一搜就能搜出一大堆。所以这里我就不说了,我要谈的是在VISTA下真正实现硬解的一些问题。没错,如果你是XP的话按照网上说的做就好了,但如果是VISTA的话,建议还是看看我下面所说的。以下所有都是在VISTA系统下的情况。

这里我使用的软件是完美解码,当然,不管你是用终极解码也好vistacoda也好,单独kmplayer+解码器也好。这都是工具而已,设置都必须要自己来做。以H264解码来说吧,广为孰知的解码器是CyberLink H264解码器,也就是PowerDVD用的那套。效果不错,很容易就开启了硬解码。但相信经常在电脑上看视频的人来说PowerDVD使用的却很少,原因很简单他不支持MKV封装。这是很讨厌的一种情况,尽管MKV封装只能在电脑上使用但目前网络上视频封装的大户却仍然是它。所以才有各种牛人把里面相关的解码器提取出来单独使用。所以在完美解码下我们使用的解码器仍然是CyberLink(DXVA)。好了,问题来了,当你按照网上操作使用CyberLink(DXVA)后你会发现硬解码没有开启或效果很小。这个问题着实困扰了我很久,直到某天无意间看到某人的一句话才恍然大悟。问题就在渲染器上,XP下大家都知道使用VMR9渲染器,然后以为到VISTA下仍然可以。但事实却是VMR9在VISTA下无法正常工作,使用该渲染器的话是无法打开硬解码的。而正确的选择应该是EVR(C/A)渲染器,至于EVR和EVR(C/A)的区别我就不说了,后者支持外挂字幕。这样一来,硬解码就很正常的开启了,效果非常明显的。OK,别急,光到这里还没完,我刚才提到的有两个东西,一个是CyberLink(DXVA)解码器和EVR(C/A)渲染器。而在实际使用中你会发现这种简单的搭配并不能解决所有问题。

首先碰到的一种情况就是你会发现有些MKV视频播放出错。对,就是这样,PowerDVD都不支持MKV,他的解码器当然不会好好的来支持MKV了。在完美解码里,我们发现CyberLink(DXVA)分为CyberLink(DXVA)和CyberLink(DXVA) for MKV。而在kmplayer中,提供的外部解码器中也包括CyberLink H.264/AVC Decoder(PDVD8)和CyberLink H.264/AVC Decoder(PDVD7.x)。事实证明PDVD8的版本对H.264有着更好的硬解码效果,但对于MKV封装的话PDVD7.x却更加适合,起码不会出错。而完美解码中那两个解码器的区别也就是一个8一个7.x。所以当各位发现某些MKV无法正常播放的话不放试试这个。

第二种碰到的情况比较诡异,问题不知道出在哪里,显然不是封装的问题,但编码也确实就是H.264。我们用EVR(C/A)+CyberLink(DXVA)就是放不了。这种情况比较少见,但确实存在。特别是某些高分辨率的视频,比如我手上有一个1920×1088的《攻壳机动队2.0》就是这个问题。通过反复尝试最后终于发现问题还是在渲染器上。这里有可能是软件基础的问题,在kmplayer下使用EVR(C/A)+CyberLink(DXVA)的话无法正常播放。但如果把播放器换成BSplayer的话就可以了。原因不知道,只能认为是BSplayer比kmplayer在EVR上支持的更好。但大家都知道BSplayer不好用,起码我本人和不习惯那个。所以回过头来继续看kmplayer上的渲染器,在完美解码的解码设置里提供的可用于硬解码的只有EVR,但如果你打开kmplayer的视频设置的话你会发现能够选择的渲染器更多。这里我提到一个叫Direct 3D 的解码器,它其中包括从DX7到DX9的各种版本,自己挑吧。而在我选择Direct 3D (DX9)RGB Surface渲染器后,CyberLink(DXVA)终于能正常工作了,硬解码也开启了。但还有问题,他在完美解码中属于默认解码器,开启他的后果就是VISTA的著名桌面特效在播放视频的时候会强制关闭,关闭播放器后再恢复,这玩意很恶心啊!

OK,说到这里也差不多了。目前得到的结论是在VISTA下还没有十分完美的软件+渲染器+解码器的组合(好吧,这里提下haali分离器在AVI文件的支持上也有问题)。我们只能根据所看文件的特性来临时更改解码组合,很遗憾,但这是事实。

 想说点什么吗?

 (拖动评论框右下角可扩展评论框面积;若评论发表后未显示请耐心等待审核)

左半红印发表于2008.12.27th