在Ubuntu 14.04平台上利用Intel的GPU实现硬件加速--基于VAAPI

先前利用了一些时间去网上搜索资料,了解Intel的集显,特别是E3800系列的SOC,主要是因为老大安排一个任务,叫我协助另一个公司的同事调查这个SOC上的硬件加速功能,即硬件解码。这个事我很早就开始耳闻了,当时还在搞项目,没空理。趁着项目处于交付阶段有点空余时间就安排我去做。

手册上讲得很明白,芯片支持h.264硬件解码。从wiki上也看到集成的GPU可以实现硬解。在一番搜索研究后,终于在ubuntu下实现了GPU硬解。现在看来,其实事情很简单,在ubuntu下使用mplayer播放1080P的视频,CPU占用率不高就行了——就这么简单。

下面是实现这个功能的步骤:

1、安装vaapi及drm库:

sudo apt-get install libdrm-intel1 libva1 libva-intel-vaapi-driver vainfo

2、安装intel集显驱动:

sudo apt-get install i965-va-driver

3、安装带有vaapi的mplayer:

mplayer默认是没有整合vaapi的,需要使用它的vaapi分支源码编译才行,不,有好心国际友人已经实现了ubuntu的第三方源。

首先添加这个源:

sudo add-apt-repository ppa:sander-vangrieken/vaapi
(按回车继续)
更新一下源列表:

sudo apt-get update
之后就可以使用常见的apt-get install来安装了:

sudo apt-get install mplayer-vaapi

没有什么错误的话,一切就OK了。需要注意的是mplayer是没有界面的,只有命令行,如果要安装一个像上去正常点的播放器,就要安装gnome-mplayer或smplayer,不过这不是我们关注的重点(其实我已经安装了,但按网上配置的方法,CPU没降下来)。

播放视频命令很简单,如下:

mplayer -vo vaapi xxx.av

其中“-vo vaapi”指定“视频输出”为vaapi,通过mplayer -vo -h可以查看其支持的视频输出有哪些(比如,指定输出为sdl就不会使用硬件解码,此时CPU占用率是很高的)。网上还提到需要添加"-va vaapi"选项,即指定视频加速,但这个版本的mplayer没有,因此不用输入。

算起来,完成上面的命令是一下子的事情。但从不了解到真正完成,花了很多时间。首先去了解E3800的技术手册,知道其支持哪些特性。然后在Ubuntu上验证,一开始在14.04版本上参考另外一个文章的做法,不成功,于是以为版本太新不合适,于是降低Ubuntu版本来试,也不行,后来使用了Intel上介绍的Timesys的Fedora系统,不行,再后来,还是选择最初的版本,结果找到一个成功案例,于是验证正常了。

主要参考了文章:http://www.tuicool.com/articles/EFbU3m


2015.3 PS:

这个事务属于“友情协助”,另一个公司的人员想在他们的项目上使用E3800的硬件解码,但他们不懂,于是发电子邮件让我们这边搞,当然,这是转了好多个主管,最终了到我头上。在刚刚完成上文中的验证后,我又被安排到另外一个比较紧急又没头绪的任务了,于是如何使用这个硬件解码,我没怎么深入研究了。半桶水“专家”就是这样练成的。

李迟 2015年2月12日



©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页