Linux下为Youtube视频开启GPU硬件解码(nvidia)

一直对Adobe Flash Player这个东西又爱又恨, 但无奈的是在以后很长一段时间内可能没它还真不行. 只是这厮对资源的占用是相当的霸道, 在配置较低的机子上开个码率高点的视频那简直就是噩梦: CPU的占用率总是居高不下, 以至于拖慢整个浏览器乃至系统的运行.

好在Flash版本更新至11之后, 在Win/Mac/Linux三大平台下默认均已经开启了对视频的GPU加速渲染, 如此一来便降低了不少的CPU占用. 然而, 作为高清晰度高码率视频来说, 其视频解码部分却仍然由CPU全权负责. 这样一来, 低码率视频尚且能够对付, 一旦清晰度一高(Youtube中轻松可见的720p/1080p), 其对于CPU的计算压力还是不可小视的.

 

下面是在Linux下为Youtube视频开启GPU硬解的方法及实测对比:

硬件及系统环境:

CPU: Intel Core 2 Duo T9900 3.06Ghz

GPU: nVIDIA GT 240M

系统: Arch Linux 64bit

浏览器: Chromium 20.0.1132.47

Flash: 11.2 r202

先决条件: 正确安装nVIDIA驱动程序及Flash插件(Chromium并不自带Flash).

测试视频地址:  http://www.youtube.com/watch?v=XSGBVzeBUbk

对于测试视频, 选择720p的清晰度, 开始播放后, 在视频上右键->Show video info. 显示结果如下:

可以看到, 视频加速渲染已经被正常开启, 但视频解码仍然通过软件进行. 此时CPU的占用情况:

现在, 我们通过安装libvdpau(Nvidia VDPAU library)来实现对于Youtube视频的GPU加速解码:

1. 首先, 安装libvdpau. 关于VDPAU的介绍可以参照Wikipedia(http://en.wikipedia.org/wiki/VDPAU). 在Arch Linux上安装只需直接”pacman -S libvdpau”即可. 其他发行版类似.

2. 修改Flash Player的配置文件, 以开启GPU加速解码:

# vim /etc/adobe/mms.cfg

在其中注释掉或增加如下内容保存:

EnableLinuxHWVideoDecode=1

3. 再次打开上面的测试视频进行测试(720p清晰度):

可以看到, 视频信息中显示了硬件加速解码已经开启. 此时的CPU占用率情况:

由此可见, 在硬件加速解码开启之后, 播放视频时对于CPU的资源占用是有一定程度的下降的. 由于带宽限制, 未对更高码率的1080p级别Youtube视频进行测试.

比较遗憾的是, 现阶段使用VDPAU开启硬解后, 对于国内的诸多视频网站支持均不是特别好, 经常会出现Flash插件崩溃的现象. 希望不久之后能得到改进吧.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.