页面

2011年12月7日星期三

在Potplayer中调用ffdshow DXVA decoder

Potplayer是一款优秀的视频播放器,之前我也写过一篇推广Potplayer的文章,其无广告和硬件加速支持是我最初选择它的原因。而其中所谓的硬件加速就指的是DXVA,一个有微软制定并在windows中实现的API接口。

但是,我慢慢发现Potplayer内带的DXVA模块并不是很令人满意。虽然看1080p的时候确实能够有效的降低CPU的占用率,但是就算是播放480p,在跳转时间轴时也会出现画面闪一下才能够继续播放的问。题由于这个问题,我有很长一段时间都放弃使用Potplayer内置的硬件加速模块,仗着CPU还算可以1080p也强行使用软解。

前几天我发现JOG版老友记的S09E04用Potplayer播放的时候只有声音没有图像,就另外下一个也有一样的问题,于是我开始折腾解码器这些东西。在折腾的过程中我偶然间注意到ffdshow也提供DVXA支持,从而能够支持硬件加速。于是我立马开始尝试。

去下载一个ffdshow的最新SVN编译版,注意不要下载正式版,像这种开源软件一般正式版的更新都比较慢,不过开发板一般也足够稳定了,毕竟新版的新功我们一般是用不到的。下载之后开始安装,在选择安装部件的时候记得勾上DXVA支持。ffdshow安装配置安装之后打开ffdshow DXVA decoder设置,硬件加速(DXVA)中把H264和VC1选上,DirectShow控制中在“仅在以下程序中使用”里添加上Potplayer的主程序或者直接将这一项前面的勾去掉。

我一开始就没有注意到这个设置,在Potplayer中设置好之后也只是调用软解……

然后,打开Potplayer,在参数选项中的滤镜-视频解码中点击“源/镜解码器管理”,然后选择“添加系统解码器”,至少把ffdshow DXVA decoder选上。确定之后回到视频解码,把H264 AVC1 VC-1的解码器设置都改成ffdshow DXVA decoder。这样设置就搞定了,现在只要使用Potplayer打开硬件解码能够支持的格式就能够调用ffdshow的硬件加速功能了,在拖动时间轴的时候也变顺畅了。

作为一个优秀的开源软件,ffdshow的功能可不止那么一点。ffdshow Audio decoder也有很强的功能,很够针对不同的音响系统进行混音,还有很多Potplayer本身不具备的细节调整的功能。

在折腾这些解码器的过程中,我对MPC的印象也有了很大的改变,以前我总觉得MPC是那种别人整合的解码包中附带的播放器而已,而从其官网上下载了MPC的独立版本之后我发现Potplayer借鉴了不少MPC的设计,而新版的MPC自身也支持DXVA加速了。对我来说开源软件如果没有什么致命缺陷的话总是我的第一选择,于是现在我的默认播放器也从Potplayer改成MPC了。虽然快捷键设置之类的还有点不习惯,但还是很令人满意的。

至于后来那集老友记,我发现其实不是解码器的问题,而是在Potplayer中调用系统自带的AVI分离器的容错能力较低,实际上什么也不用安装,只要将AVI分离器改成Potplayer的内置分离器就行了……

说到分离器,我发现在网上很受推崇的haali分离器和LAV分离器在搭配DXVA解码器,不管是ffdshow的还是MPC自带的,都会出现一切换音频,视频就停止播放,而且还不关播放器就恢复不过来的问题。这个问题Potplayer和MPC自带的分离器都没有遇到。放狗搜也没看到解决方法,甚至没看到有人抱怨这个问题……不知道有没有高人能够提供解决方法……

更新:对比Potplayer,MPC的使用体验还是差了一些……我又用回Potplayer了,虽然现在只是单纯的作为播放器外壳而已。

没有评论:

发表评论