[教程]在Linux上开启显示卡的硬件解码功能!(侧重于A卡)

Totem,mplayer,sopcast,realplayer,bmp
02015678
帖子: 110
注册时间: 2007-11-10 14:29
联系:

[教程]在Linux上开启显示卡的硬件解码功能!(侧重于A卡)

#1

帖子 02015678 » 2011-05-02 22:27

A卡的话,我的电脑需要修改grub.cfg将Linux启动命令行的gfxmode那一行删除掉,否则Linux启动会花屏,不知道其他人有没有这个现象。

另外现在有一个较为简单的办法,可以不用自己费劲去安装VAAPI和XVBA后端,参见这个帖子
http://www.stehem.net/2012/05/09/how-to ... D-GPU.html

【2012年11月03日更新】

对于VAAPI的安装,我认为ryoohki的这个帖子讲的还是蛮不错的。以下文章很多来自他的原文,在此十分感谢。我也是站在巨人的肩膀上提出一点自己的看法。

一、首先给大家理顺VAAPI里面各种软件包的主次关系
libva:也就是传说中的VAAPI,是一个开放源代码的提供硬件解码功能的模块;
va-i965-driver:Intel显卡的VAAPI后端,负责连接Intel显示卡驱动与VAAPI。
xvba-video:AMD/ATi显卡的VAAPI后端,负责连接AMD/ATi显示卡驱动与VAAPI。
vdpau:NV显卡的VAAPI后端
,负责连接NV显示卡驱动与VAAPI。
这样大家在后边的流程中就会知道自己应该安装哪些软件包了。

二、接下来就开始了。
a、对于NV显卡,vdpau在软件源里面应该就有,基本无需折腾。如果Ubuntu版本比较老源里面没有请参见下文。
b、对于Intel显卡,对AMD/ATi显卡请参见下文。
1、安装AMD显卡官方驱动
请注意,如果你的AMD显卡是2000/3000/4000系列,催化剂Catalyst 12.6是目前最新的驱动。自2012年7月起,AMD新发布的驱动将不再支持2000/3000/4000系列,除非发现有多到连AMD都看不下去的BUG或者出现重大安全漏洞。
请前往AMD官网下载,如果觉得下载速度缓慢,请移步驱动之家:http://drivers.mydrivers.com/drivers/44 ... 000-12.6-/

卸载、安装显卡驱动,建议在CLI字符界面下进行!
12.6驱动的安装还是建议先生成DEB包再安装。生成DEB包的办法是

代码: 全选

sudo /路径/amd-XXXXX-x86-x64.run --buildpkg Ubuntu/你的系统开发代号
然后重启在Recovery Mode的字符界面下安装生成的四个DEB文件。

安装完毕后请在终端执行

代码: 全选

aticonfig --initial
[/b]
重启命令很简单

代码: 全选

sudo reboot
或者

代码: 全选

sudo shutdown -r now
对于AMD/ATi显卡,请尤其注意你的驱动版本。开源驱动并不支持VAAPI,因此你需要安装官方闭源驱动。
AMD显卡用户需要使用以下命令确保你的驱动已经正常安装

代码: 全选

cat /var/log/Xorg.0.log | grep UVD
正常的输出结果应该是
(II) fglrx(0): UVD2 feature is available
或者
[ 2758.873] (II) fglrx(0): UVD feature is enabled(II) fglrx(0):
总之是有内容输出的而非空白就好,这证明你已经正常安装AMD/ATi官方驱动。

2、建立mplayer编译依赖的环境
首先卸载可能已经安装的系统源里边的VAAPI及其后端(见前文)。其中VAAPI包括libva1 , libva-dev等软件包。
然后执行以下命令构建mplayer编译环境:

代码: 全选

sudo apt-get build-dep mplayer
确保这一步执行过程中没有出现什么错误。

3、安装可用的VAAPI以及其后端,非常重要!
这一步是本文的关键所在,大家的眼睛可要睁大哦~
本文以AMD/ATi显卡为例,但是我会在关键点告诉大家需要注意的地方,以保证本文的通用性。
有关本节所提到的软件包,可以去Launchpad搜索下载:https://launchpad.net/ubuntu/

需要安装的软件包有:

显示卡驱动与VAAPI的接口:
AMD/ATi显卡:xvba: https://launchpad.net/ubuntu/+source/xvba-video
Intel显卡:i965-va-driver: 源里面应该会有。
NV显卡:请用Synaptic软件包管理器搜索安装vadpu,源里面应该会有。

VAAPI开源硬件解码模块:
libva1, libva-dev, libva-x11-1, libva-glx1, libva-tpi1, vainfo:https://launchpad.net/ubuntu/+source/libva/1.0.12-2

安装DEB建议在字符界面下,因为如果出错可以看到详细错误信息,安装指令为:

代码: 全选

sudo dpkg -i 要安装的DEB软件包所在路径
由于每个人使用的Ubuntu版本不一样,我无法推荐一个确定的版本。如果你使用的版本较新,那建议你用最新的稳定版,如果你用的是10.04LTS版或者类似的,建议选用较老的稳定版本。选择的原则是容易满足依赖关系,系统GLIBC版本满足要求。需要注意的是libva1, libva-dev, libva-x11-1, libva-glx1, libva-tpi1, vainfo的版本必须完全一致。如果是Intel显卡,那么i965-va-driver的版本也需要跟上述软件包完全一致,如果是NV的或者AMD/ATi的,建议选择容易满足依赖关系的稳定版本。

我所选择的版本信息仅供参考:
UBUNTU SERVER 10.04.4 LTS running on Thinkpad SL410
xvba:0.7.8-1ubuntu3
其他:1.0.12-2

安装完了吧,试试你安装成功了没有:

代码: 全选

vainfo
成功的话,应该输出类似这样的结果,附有你的后端支持硬件解码的格式清单
libva: libva version 0.31.1-sds1
Xlib: extension "XFree86-DRI" missing on display ":0.0".
libva: va_getDriverName() returns 0
libva: Trying to open /usr/lib/va/drivers/fglrx_drv_video.so
Xlib: extension "XFree86-DRI" missing on display ":0.0".
libva: va_openDriver() returns 0
vainfo: VA API version: 0.31
vainfo: Driver version: Splitted-Desktop Systems XvBA backend for VA-API - 0.7.8
vainfo: Supported profile and entrypoints
VAProfileH264High : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
如果输出的是
libva: Trying to open /usr/lib/va/drivers/fglrx_drv_video.so (这里的 /路径/文件 不同版本可能不一样)
libva: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit
说明VAAPI没有找到那个,显示卡驱动与VAAPI的接口,解决办法也非常简单。
找到『显示卡驱动与VAAPI的接口』的那个软件包,例如xvba,直接右键选择解压缩Extract,看到有data.tar.gz和control.tar.gz,请解压缩data.tar.gz。然后在其中的usr文件夹下的lib文件夹下的某某(某某视不同版本而不同)文件夹下,有两个文件,都是so后缀,其中一个文件图标上带箭头,是链接文件,请把这个文件重命名为文件 (就是刚才终端显示的那个文件)复制到你的主目录,然后打开终端执行命令把这个链接文件拷贝到需要的地方

代码: 全选

sudo cp ~/文件  /路径/
注意这里的文件路径要按你的实际显示替换哦~

然后你再执行命令vainfo,应该就可以看到正常的输出了,VAAPI终于可以调用驱动进行硬件解码了。


4、安装新版VLC播放器,支持硬解码!
先说一个简单的,请直接在源里面安装最新版本VLC播放器。
对于老版本的Ubuntu,你的软件源里的VLC不是最新,请移布官网下载。

代码: 全选

sudo apt-get install vlc mozilla-plugins-vlc
安装完毕后,请在终端输入vlc启动程序,之所以在终端启动是便于查看调试信息。
点击工具菜单,选择首选项,在『输入与编码器』选项卡,如果你的VAAPI正常安装,那么『使用GPU加速(实验性功能)』默认已经勾选,如果没有默认勾选,通常说明你的安装出现了问题,VLC无法正常调用。
请打开一个视频文件,如果正常播放而没有出现花屏、程序崩溃、Xorg宕机的话,那么几乎说明你已经成功了,这时你可以在终端里看到这一段调试信息
libva: libva version 0.31.1-sds1
Xlib: extension "XFree86-DRI" missing on display ":0.0".
libva: va_getDriverName() returns 0
libva: Trying to open /usr/lib/va/drivers/fglrx_drv_video.so
Xlib: extension "XFree86-DRI" missing on display ":0.0".
libva: va_openDriver() returns 0
xvba_video: XVBA_GetSurface(): status 2
[0xb721d1f4] avcodec decoder: Using VA API version 0.31 for hardware decoding.
调试信息告诉我们,VLC已经成功探测到了VAAPI并且正常调用。

我的AMD Mobility Radeon HD4570显卡,目前可以正常解码8bit H264/AVC High Profile的文件,VC-1编码和MPEG2编码未测试。

最后祝大家都可以成功!!
上次由 02015678 在 2012-11-19 21:14,总共编辑 8 次。
02015678
帖子: 110
注册时间: 2007-11-10 14:29
联系:

Re: [教程]编译VAAPI失败的同学过来看看吧,多次失败后成功的经验

#2

帖子 02015678 » 2011-05-02 22:28

自占沙发,写个帖子累死我了。
头像
nyfair
帖子: 1067
注册时间: 2007-12-07 12:49
系统: winnux10
来自: Tree New Bee

Re: [教程]编译VAAPI失败的同学过来看看吧,多次失败后成功的经验

#3

帖子 nyfair » 2011-05-02 23:33

欢迎分享心得,但是我个人觉得ryoohki的教程很完整了啊,LZ加的步骤完全看不出有任何意义,反而加的很混乱

另外mplayer和qt完全没有一点关系

代码: 全选

a、对于NV显卡,vdpau应该有无需编译就实现硬解码的本领,不建议继续折腾;
最新的mplayer已经移除了直接使用vdpau的支持,所以N卡还是需要vaapi来间接使用vdpau的,当然不追新也没关系
本人在此论坛仅负责吐槽,问题急需解决请支付宝转账5毛至{我的[email protected]},将会竭诚为您服务

linux常见多媒体问题处理指南

1. 视频播放有问题->卸载gstreamer
2. 音频播放有问题->卸载pulseaudio
3. 远程播放有问题->卸载avahi
4. 系统全都有问题->卸载systemd,远离Lennart这傻逼让你从此轻松自在

⇩自由网络⇩
https://github.com/nyfair/freeweb
02015678
帖子: 110
注册时间: 2007-11-10 14:29
联系:

Re: [教程]编译VAAPI失败的同学过来看看吧,多次失败后成功的经验

#4

帖子 02015678 » 2011-05-02 23:46

nyfair 写了:欢迎分享心得,但是我个人觉得ryoohki的教程很完整了啊,LZ加的步骤完全看不出有任何意义,反而加的很混乱

另外mplayer和qt完全没有一点关系

代码: 全选

a、对于NV显卡,vdpau应该有无需编译就实现硬解码的本领,不建议继续折腾;
最新的mplayer已经移除了直接使用vdpau的支持,所以N卡还是需要vaapi来间接使用vdpau的,当然不追新也没关系
回答:
1、如果安装Libva最新版本,VA API未必会成功。版本最好不要最新,就按照XvBA或者你的显卡对应的后端对Libva的要求来就行。
2、mplayer跟QT4有关系啊,不信你把QT4删除看看能编译mplayer不。肯定会提示你如果没有QT4,请在编译命令后面加上禁止QT skin的参数,具体的提示记不清了。而且QT4跟VLC也很有关系。
3、这个就不知道了,我用A卡的。

ryoohki的教程很简练,这个的确佩服佩服。我这个帖子亦的确是对他的帖子的补充。
头像
rapistor
帖子: 1983
注册时间: 2009-01-19 15:09

Re: [教程]编译VAAPI失败的同学过来看看吧,多次失败后成功的经验

#5

帖子 rapistor » 2011-05-03 0:20

帮顶,正准备买AMD的电脑,这个一定用得着。 :em11
坚守在linux的天堂!
头像
灰色小狼
帖子: 4585
注册时间: 2008-12-06 10:38
系统: Arch

Re: [教程]编译VAAPI失败的同学过来看看吧,多次失败后成功的经验

#6

帖子 灰色小狼 » 2011-05-03 10:26

用arch很简单不需要折腾,装闭源驱动,装mplayer-vaapi,aur装xvba-video(修改PKGBUILD去掉fglrx依赖),视频输出选vaapi,搞定 :em11
头像
tiyuanmaster
帖子: 73
注册时间: 2009-06-14 20:14
联系:

Re: [教程]编译VAAPI失败的同学过来看看吧,多次失败后成功的经验

#7

帖子 tiyuanmaster » 2011-07-16 12:45

看到栋力无限,眼泪哗哗的 :em21 ,lz也是成电的?
其实我是不懂装懂的…………………………
02015678
帖子: 110
注册时间: 2007-11-10 14:29
联系:

Re: [教程]编译VAAPI失败的同学过来看看吧,多次失败后成功的经验

#8

帖子 02015678 » 2011-07-18 8:46

tiyuanmaster 写了:看到栋力无限,眼泪哗哗的 :em21 ,lz也是成电的?
我是成电的,不过你是在哪里看出来的?
头像
tiyuanmaster
帖子: 73
注册时间: 2009-06-14 20:14
联系:

Re: [教程]编译VAAPI失败的同学过来看看吧,多次失败后成功的经验

#9

帖子 tiyuanmaster » 2011-07-22 23:18

02015678 写了:
tiyuanmaster 写了:看到栋力无限,眼泪哗哗的 :em21 ,lz也是成电的?
我是成电的,不过你是在哪里看出来的?
推荐栋力无限的源,那一般都是成电的 :em06
其实我是不懂装懂的…………………………
jtshs256
帖子: 22323
注册时间: 2010-07-19 21:41
系统: OS X

Re: [教程]编译VAAPI失败的同学过来看看吧,多次失败后成功的经验

#10

帖子 jtshs256 » 2011-07-23 12:09

开源驱动的路过…… :em06
躺平
头像
柳岸晓风
帖子: 34
注册时间: 2009-03-22 22:29

Re: [教程]编译VAAPI失败的同学过来看看吧,多次失败后成功的经验

#11

帖子 柳岸晓风 » 2011-09-07 21:02

:em02 :em02 很详细啊,谢谢啦,不过不知道 为什么 我是 ati4650 只显示了UVD enable。
你们啊图样图森破啊
通过这里注册DropBox不仅不会怀孕,而且还会比别人多0.5G!
点这里传送去我的BLOG
  • 2009年DIY的台式机
  • AMD Athlon 5200+
  • Kingston DDRII 800 2G
  • Sapphire HD4650
忘记爱情的鱼
帖子: 26
注册时间: 2007-12-29 15:44

Re: [教程]编译VAAPI失败的同学过来看看吧,多次失败后成功的经验

#12

帖子 忘记爱情的鱼 » 2011-09-09 18:00

好帖啊 ... 等换了ubuntu第一个折腾的就是这个...
忘记爱情的鱼
帖子: 26
注册时间: 2007-12-29 15:44

Re: [教程]编译VAAPI失败的同学过来看看吧,多次失败后成功的经验

#13

帖子 忘记爱情的鱼 » 2011-09-10 23:44

杯具了 10.04按照Linux Graphics Drivers from Intel的教程怎么也不成功 崩溃了
简单实现方法
http://www.ubuntuupdates.org/packages/show/249923
这个里面填加ppa
新立得里面 安装 libva1 libva-dev libva-x11-1 libva-tpi1 libva-glx1 vainfo i965-va-driver
这是 intel显卡的安装方式
我的显卡太菜硬解不能。。。还是要回win。。。 :em06
用xbmc解也是卡的不行 显卡是intel 4500mhd 唉 没办法
yijianwei
帖子: 8
注册时间: 2012-07-25 15:59

Re: [教程]编译VAAPI失败的同学过来看看吧,多次失败后成功的经验

#14

帖子 yijianwei » 2012-07-25 16:03

intel gma3150怎么开启加速?什么作为vaapi的后端?
02015678
帖子: 110
注册时间: 2007-11-10 14:29
联系:

Re: [教程]编译VAAPI失败的同学过来看看吧,多次失败后成功的经验

#15

帖子 02015678 » 2012-11-03 13:44

柳岸晓风 写了::em02 :em02 很详细啊,谢谢啦,不过不知道 为什么 我是 ati4650 只显示了UVD enable。
这个是正常的应该没问题
回复