一直对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插件崩溃的现象. 希望不久之后能得到改进吧.