目前在Linux 系统下,NVIDIA 已经提供了官方的高清播放支持。由于高清视频文件压缩率比较高,所以在播放时,解码速度一定要快,才能够流畅的播放。所以对CPU 的要求比较高,CPU 占用率比较高。为了解决这个问题,目前的显卡厂家都在显卡核心GPU 中嵌入了部分视频解码格式的支持,来希望能够释放CPU ,来保证系统的顺利运行。只是要释放CPU ,实现GPU 解码高清视频,不仅需要GPU 的支持,还需要驱动和播放软件共同合作来将视频播放引导到GPU 上去,由GPU 解码。
在Windows 系统下,NVIDIA 的高清视频解码驱动早就提供了,而在Linux 系统下,是在其180 版本开始的驱动中才正式支持了高清视频解码支持。并向Mplayer 提供了补丁,要求Mplayer 的视频输出模式改为VDPAU (VDPAU 的全称是:Video Decode and Presentation API for Unix (Unix 系统视频解码和呈现API ))。同时提供了一些硬解码格式的视频解码器,来引导视频流通过GPU 来解码,以便释放CPU 。
VDPAU 支持硬件解码MPEG-1 、MPEG-2 、H.264 和VC-1 格式,也支持对已解码视频进行一些后期处理特殊效果,如反交错、降噪等。硬件上支持GeForce 8 以上显卡,系统支持Linux 、FreeBSD 和Solaris 。
现将Linux 下针对NVIDIA 显卡实现硬解码的方法介绍如下:
前提条件
-
NVIDIA 显卡必须支持硬解码功能。如果该显卡没有硬解码功能,那么,再怎样修改都无法释放CPU 。所以无法提高系统性能;
-
Linux 下必须安装NVIDIA 官方提供的180 及其以后的驱动版本;
-
Mplayer 建议使用最新的版本,下载地址是http://www.mplayerhq.hu/design7/dload.html ,要不然你需要下载下面这个版本来完成高清播放的支持。具体的下载链接是ftp://ftp.mplayerhq.hu/MPlayer/releases/mplayer-export-snapshot.tar.bz2
配置方法
-
在linux 系统上安装NVIDIA 的官方商业驱动。具体的下载地址是http://www.nvidia.cn/Download/index.aspx?lang=cn 。在这里根据自己使用的具体显卡来选择相应的驱动,下载安装。值得注意的是在安装NVIDIA 的显卡驱动时,首先要安装kernel 的开发包,即kernel-devel 包。同时要进入到字符模式下。进入字符的方法有很多,这里就介绍一种比较简单的方法:
打开终端——切换到root 用户。具体的切换命令是su—— 执行init 3 命令即可。
进入到字符模式后,执行sh NVIDIA-*.run 程序即可安装。
安装完成建议重启计算机。
如果是在Ubuntu 系统上,建议你使用系统——系统管理——硬件驱动来执行图形化安装商业驱动。这样比较方便。
-
编译并安装mplayer 程序。建议基于自己的NVIDIA 显卡和NVIDIA 官方驱动编译mplayer 。具体的编译方法如下:
./configure --enable-gui –language=zh_CN
make -jN // 根据你的CPU 内核数决定,双核的用-j3 吧!
make install
当然,configure 处,也可以根据自己的实际情况添加不同的参数。如果你不想基于NVIDIA 显卡编译,你在编译时,请记得加入参数—enable-vdpau 。来打开vdpau 功能。
这样安装以后的mplayer 在/usr/locale 目录下。跟系统正常目录有所出入。如果你为了使其能够安装到正常目录下,你可以使用下面的configure 命令:
./configure --enable-gui --language=zh_CN –prefix=/usr/ --bindir=/usr/bin/ --datadir=/usr/share/mplayer –mandir=/usr/share/man –confdir=/etm/mplayer –libdir=/usr/lib/ --codecsdir=/usr/lib/codecs
这样就能够保证安装到了正常目录下。
-
配置mplayer 。 要想用nvidia 显卡的硬解码功能,在用mplayer 播放时,需要加入以下参数:
-vo vdpau -vc ffmpeg12vdpau,ffwmv3vdpau,ffvc1vdpau,ffh264vdpau
其中-vo vdpau 是指明以vdpau 模式输出。而参数-vc ffmpeg12vdpau,ffwmv3vdpau,ffvc1vdpau,ffh264vdpau 是指明优先使用这几个视频解码器。mplayer 在选择视频解码器时是比较智能的。一起添加后,只是让mplayer 在这几个视频解码器中优先选择,如果没有适合的,再去解码器库中寻找。不会起到限定解码器的作用。
另外,mplayer 能够自动列出当前能够支持到的视频解码器以及视频输出格式。具体的命令是:
mplayer -vo help // 列出能够使用的视频输出模式
mplayer -vc help // 列出能够使用的视频解码器
mplayer -ao help // 列出能够使用的音频输出模式
mplayer -ac help // 列出能够使用的音频解码器
-
gmplayer 实现高清视频解码输出的方法。gmplayer 只是mplayer 的图形输出模式。其更方便用户使用和设置而已。没有其他特殊之处。但是针对mplayer 的这几个参数在gmplayer 中无法使用。若要在gmplayer 中使用高清视频解码输出,需要修改mplayer 相应的配置文件。
可以修改的文件有两个。一个是放在/etc/mplayer 目录下的mplayer.conf 文件。另外一个就是放在了用户主目录下的.mplayer/config 文件。这两个文件中修改后的效果是一样的。只是对用户权限的限定不一样。在/etc/mplayer 目录下修改后,改系统中的所有用户都可以使用高清视频播放了。而在用户主目录下的.mplayer 目录中修改了以后,只有该用户登录后在可以使用高清视频播放。所以用户在设置时要根据自己的具体情况来选择相应文件进行修改。
测试方法
测试高清视频播放的方法很多,但是最直接的方法就是下载高清电影,或者高清小片段,直接播放。一般不使用高清视频解码的话,播放高清电影,CPU 的占用率一般在99% 左右,而使用了高清视频解码以后,CPU 的占用率在8% 以下。
参考文献:
mplayer播放高清(nvidia vdpau):http://bbs.fedora-zh.org/showthread.php?t=1128
NVIDIA 180版Linux驱动视频解码加速实测 : http://blog.chinaunix.net/u1/39544/showart_1418368.html
我的优化PC:在Linux下进行高清VDPAU解码测试:http://blog.zol.com.cn/868/article_867075.html
使用vdpau mplayer作为后端的smplayer的设置方法 : http://forum.ubuntu.org.cn/viewtopic.php?f=74&t=177518