虽然现在的 CPU 性能足够软解码高清视频,但是大家都知道,在很多方面,硬一点总是要比软塌塌的强。那么我就说说视频解码方面的 西地那非 。当然,下面所有的内容都是以 nvidia 显卡为基础的。
VDPAU
VDPAU 是 nvidia 开发的用于 nv 显卡硬解码的 API ,现在的 mplayer 已经可以很好的支持这一技术
首先,把该装的都装上,什么 mplayer 、nv闭源驱动、ffmpeg 什么的都装上
然后
$ mplayer -vo help | grep vdpau
看看是不是输出
vdpau VDPAU with X11
如果是,请继续,如果不是,自查哪里没搞对
使用下面参数播放一个需要硬解码的视频
$ mplayer -vc ffh264vdpau,ffmpeg12vdpau,ffwmv3vdpau,ffvc1vdpau, -vo vdpau
如果看到下面信息里使用了任何 ffh264vdpau, ffmpeg12vdpau, ffwmv3vdpau, ffvc1vdpau 之一的解码器,那么就硬解成功了
如果需要每次播放都尝试硬解码,把这几个参数写到配置文件里(系统级或用户级自选)
vo=vdpau,xv
vc=ffh264vdpau,ffmpeg12vdpau,ffwmv3vdpau,ffvc1vdpau
使用 VDPAU 进行高清解码, CPU 占用率可以保持在 20% 以内,并且画面没有错误
VA API
VA API 是一个 unix 上兼具 API 和库作用的图像加速技术,这个技术最初是由 Intel 为了旗下的 GMA 系列图形加速芯片设计的,但是其他的硬件也可以自由的将这个 API 用于硬件视频解码。
如果希望使用这个技术进行硬件解码,首先要使用下面这个 PPA 安装所需的组件,包括 mplayer 、 VLC 、vdpau-video 等,不同品牌的显卡需要不同的包,比如 nv 显卡需要与 vdpau 相关的包,而 ATI 的显卡需要 XvBA 相关的包, Intel 或许也有相关的包,具体是哪些我也不知道。当然显卡驱动是必须要安装的。
$ sudo add-apt-repository ppa:nvidia-vdpau/cutting-edge-multimedia
对于 mplayer ,使用下面的参数进行播放,当然参数同样可以写到配置文件里
mplayer -vo vaapi -va vaapi
对于 VLC ,直接勾选视频选项里的硬件加速即可,不过目前即便是启用了硬件加速, CPU 占用率仍然与软解妈一样高,不具有实际意义。
目前这个技术通过 vdpau 后端运行的效率比直接 vdpau 略微低一点,不过 CPU 占用率也能基本保持在 20% 左右,至于 intel 显卡直接 vaapi ,或者 ATI 显卡通过 XvBA 后端运行的效率,我就没有办法测试了