现在视频网站的码率越来越高,用chrome(ver32.0+)内置的flash player(ver12.0)播放1080p,纯软解非常的慢。很多人尝试用gpu硬解加速视频播放,但是对何为开启gpu硬解争论很多。我这里聊聊我的看法。
首先要理解视频播放,视频文件file先通过分离器分开video和audio。其中video先解码decode,然后处理,再然后通过渲染rendering,再输出屏幕。
本来视频网站一般利用Flashplayer的接口,编写swf文件,通过CPU处理,播放在线视频(flv)。
但是视频播放处理过程需要进行大量的向量运算,传统CPU对向量运算处理的相对慢。虽然intel公司在1996年就在奔腾CPU里加入MMX,来加快向量运算,但是现在的显卡GPU迅猛发展,使得GPU先天的向量运算性能远远超过了现在的CPU,加之GPU厂家提供了方便的接口,所以我们都尝试用GPU加速视频处理过程。
(GPU和CPU的向量运算差距有多大,可以用AIDA软件,跑GPGPU,让GPU和CPU来比较一下。前提你的显卡支持通用运算。)
Flashplayer通过Gpu能加速两步,一步是解码decoding(例如用nvidia的CUDA),二步是渲染rendering。
解码decoding的性能压力来自video的码率,越高占用越多cpu及gpu资源。
渲染rendering的性能压力来自播放窗口的分辨率,最大占越多cpu及gpu资源。
测试播放
环境1:windows7(sp1)、奔腾core、ram6g,nvidia 750ti(ver335支持CUDA)
代表性浏览器browser:IE11+flashplayer12,chrome(ver32.0)+flashplayer12(ppapi),chrome(ver32.0)+flashplayer 12(npapi)。
这里解释下chrome(ver32.0)+flashplayer12(ppapi)和chrome(ver32.0)+flashplayer 12(npapi)。
Chrome(ver32.0)本身就自带插件flash12(ppapi),但是adobe网站也提供一个了可以安装在chrome上的插件flashplayer 12(npapi),安装后这两个插件通过在chrome的网址条输入chrome://plugins/,展开详细信息details,点“停用”disabled“启用”enabled来切换。
最后测试选择了youku和iqiyi上的版权视频。因为发现网站上某些未授权的视频是别人压制,不一定能通过它们编写的swf硬解。
IE11+flashplayer12下:youku上svu和sva都是true(既渲染rendering已经gpu加速accelerated),decode是acc(既解码decoding已经gpu加速accelerated)。
Iqiyi上rendering是accelerated,decoding也是accelerated。
chrome(ver32.0)+flashplayer12(ppapi)下:youku上svu和sva都是true,decode是software(既解码decoding用的是cpu,没有gpu加速)。
Iqiyi上rendering是accelerated,decoding是software。
chrome(ver32.0)+flashplayer12(npapi)下:youku上svu和sva都是true,decode是acc(accelerated)。
Iqiyi上rendering是software,decoding是accelerated。
也就是说在IE11上youku和iqiyi都能开启完全gpu硬解。
chrome(ver32.0)的内置flashplayer上,youku和iqiyi都只能开渲染rendering,而不能开解码decoding。
chrome(ver32.0)在安装adobe的flashplayer并优先开启后,youku能完全gpu硬解accelerated,而iqiyi只能解码decoding。
所以现在看来,能否gpu硬解首先看压制的视频文件和视频网站的swf播放器player能否契合,不然swf播放器player不行的话,无论如何不能gpu硬解。
然后,只有ie11下可以大多数完全gpu硬解accelerated,chrome默认的flashplayer和国内网站不太契合,只能保证rendering,不能decoding。Chrome加上adobe的flashplayer的话,像youku就能完全硬解accelerated,iqiyi这种就只能decoding。
我的看法能否完全GPU硬解因素太多,具体要看运气了,要放在线视频流畅,买块更快的CPU全软解才是王道!
我后来在这台PC上试了winxp-sp3的环境,看上次测试一样的视频。
youku
IE8+flashplayer12能accelerated decoding+rendering。
chrome(ver32.0)+flashplayer12(ppapi)只能全software,不能accelerated。
chrome(ver32.0)+flashplayer12(npapi)能全accelerated decoding+rendering。
IE8+flashplayer12能accelerated decoding,不能rendering。
chrome(ver32.0)+flashplayer12(ppapi)只能全software,不能accelerated。
chrome(ver32.0)+flashplayer12(npapi)能accelerated decoding,不能rendering。
iqiyi全屏模式播放
IE8+flashplayer12能accelerated decoding+rendering。
chrome(ver32.0)+flashplayer12(ppapi)只能全software,不能accelerated。
chrome(ver32.0)+flashplayer12(npapi)能accelerated decoding+rendering。
所以认为winxpsp3下IE8和chrome:
youku除了chrome(ver32.0)+flashplayer12(ppapi)不能accelerated,其他都可以完全加速accelerated。
iqiyi非全屏模式播放不支持任何rendering,最多decoding。但全屏模式播放下,除了chrome(ver32.0)+flashplayer12(ppapi)不能accelerated,其他都可以完全加速accelerated。
20140324更新:
我在一台老电脑上,显卡n卡7900(不支持常见的解码),winxpsp3,使用了360chrome+flashplay11(ppapi)
结果
youku:svu和sva都是true,decode是software。
Iqiyi:只有全屏模式下,rendering会是accelerated,decoding是software。不全屏rendering和decoding都是software。
letv:硬件渲染hw
居然在winxpsp3下可以硬件rendering了。