我也来折腾 vaapi硬解

Totem,mplayer,sopcast,realplayer,bmp
wudaown
帖子: 131
注册时间: 2008-04-03 12:46
来自: http://wdstudio.blogbus.com/
联系:

我也来折腾 vaapi硬解

#1

帖子 wudaown » 2010-02-14 17:35

恩,我这里的内容是到处搜刮的,自己在选用适合自己的用就好

首先准备x264

代码: 全选

 sudo apt-get install build-essential checkinstall gpac libgpac-dev git-core yasm
下载需要的所有软件

代码: 全选

$ cd $HOME
$ git clone git://git.videolan.org/x264.git
$ cd x264
$ ./configure --prefix=/usr --enable-shared
$ make
$ sudo checkinstall --fstrans=no --install=yes --pakdir "$HOME/Desktop" \
--maintainer "$USER" --pkgname=x264 --pkgversion "1:0.svn`date +%Y%m%d`-0.0ubuntu1" \
--backup=no --deldoc=yes --deldesc=yes --delspec=yes --gzman --default
$ make distclean
这样x264就算是编译,安装好了

接下来准备live555

代码: 全选

$ cd $HOME
$ wget http://www.live555.com/liveMedia/public/live555-latest.tar.gz
$ tar xvf live555-latest.tar.gz
$ cd live
$ ./genMakefiles linux
$ make
$ sudo cp -r $HOME/live /usr/lib
然后是 libopencore-amr
有两个方法安装
在ubuntu 9.04要从medibuntu安装

代码: 全选

$ cd $HOME
$ wget http://transact.dl.sourceforge.net/project/opencore-amr/opencore-amr/0.1.2/opencore-amr-0.1.2.tar.gz
$ tar xvf opencore-amr-0.1.2.tar.gz
$  cd opencore-amr-0.1.2/
$ ./configure --prefix=/usr
$ make
$ sudo checkinstall --fstrans=no --install=yes --pakdir "$HOME/Desktop" \
--maintainer "$USER" --pkgname="libopencore-amr" --pkgversion="0.1.2"  \
--backup=no --deldoc=yes --deldesc=yes --delspec=yes --gzman --default
$ make distclean
ubuntu 9.10就方便多了

代码: 全选

sudo aptitude install libopencore-amr
然后准备解码包

代码: 全选

$ cd $HOME
$ wget http://www.mplayerhq.hu/MPlayer/releases/codecs/all-20071007.tar.bz2
$ sudo mkdir -pv /usr/lib/codecs
$ tar xjvf all-20071007.tar.bz2
$ sudo cp -v $HOME/all-20071007/* /usr/lib/codecs
下面算是正式开始弄vaapi了
先下载vaapi并且安装
http://www.splitted-desktop.com/~gbeauchesne/libva/
然后把显卡驱动链接到vaapi的文件夹

代码: 全选

/usr/X11R6/lib/modules/dri
ls
ATI 会得到

代码: 全选

fglrx_dri.so
Intel 会得到

代码: 全选

psb_drv_video.so 
Nvidia 我就不清楚了 ,不过应该是一样的一个.so文件
其实N卡根本不需要vaapi,毕竟已经有vdpau了

代码: 全选

sudo ln -s /usr/X11R6/lib/modules/dri/fglrx_dri.so /usr/lib/va/drivers/
然后安装xvba-video - XvBA backend for VA API
http://www.splitted-desktop.com/~gbeauc ... vba-video/

然后安装libdirectfb-1.2-0

代码: 全选

sudo aptitude install libdirectfb-1.2-0

代码: 全选

ls /usr/lib | grep libdirect
应该得到一下结果

代码: 全选

directfb-1.2-0
libdirect-1.2.so.0
libdirect-1.2.so.0.7.0
libdirect.a
libdirectfb-1.2.so.0
libdirectfb-1.2.so.0.7.0
libdirectfb.a
libdirectfb.so
libdirect.so
可是mplayer 调用的是 libdirectfb-1.0.so.0
那就把libdirectfb-1.2.so.0链接到libdirectfb-1.0.so.0

代码: 全选

sudo ln -s /usr/lib/libdirectfb-1.2.so.0 /usr/lib/libdirectfb-1.0.so.0
接下来安装libmad0

代码: 全选

sudo aptitude install libmad0
我们已经有了libx264了

代码: 全选

ls /usr/lib | grep libx264
得到

代码: 全选

libx264.a
libx264.so
libx264.so.67
可是mplayer调用的是libx264.so.65
所以在建立链接

代码: 全选

sudo ln -s /usr/lib/libx264.so.67 /usr/lib/libx264.so.65
到这里准备工作都差不多了

接下来下载mplayer-vaapi源码

代码: 全选

wget http://www.splitted-desktop.com/~gbeauchesne/mplayer-vaapi/mplayer-vaapi-latest-FULL.tar.bz2

代码: 全选

cd /path to your mplayer-vaapi-latest-FULL.tar.bz2

代码: 全选

tar xjvf http://www.splitted-desktop.com/~gbeauchesne/mplayer-vaapi/mplayer-vaapi-latest-FULL.tar.bz2

代码: 全选

cd mplayer-vaapi-20100114
ls
得到
checkout-patch-build.sh mplayer-vaapi NEWS patches README.txt
然后安装mplayer 编译环境和 libdrm-dev

代码: 全选

sudo apt-get build-dep mplayer libdrm-dev
准备编译mplayer在这之前我们需要修改一下checkout-patch-build.sh,在这个文件中默认./configure时使用的参数是

代码: 全选

--enable-vaapi
--disable-vdpau
如果你和我一样还需要其他参数的话就要修改了
比如我的
#!/bin/sh

svn_host=svn://svn.mplayerhq.hu
mplayer_rev=30302
ffmpeg_rev=21211
dvdnav_rev=1188
dir=mplayer-vaapi
last_step=build
enable_vaapi="--enable-vaapi"
enable_vdpau="--disable-vdpau"
enable_gui="--enable-gui"
enable_freetype="--enable-freetype"
enable_fontconfig="--enable-fontconfig"
enable_zh="--language=zh_CN"


if [ $# -gt 0 ]; then
arg="$1"
case $arg in
extract|prepare|configure|build|checkout|patch)
last_step=$arg
shift
;;
esac
fi

case $last_step in
checkout)
last_step=extract
;;
patch)
last_step=prepare
;;
esac

ncpus=`getconf _NPROCESSORS_ONLN`
if [ $ncpus -gt 1 ]; then
ncpus=`expr $ncpus + $ncpus / 2`
fi
DEFAULT_NCPUS=$ncpus

ncpus=${BUILD_NCPUS:-${DEFAULT_NCPUS}}
if [ $ncpus -lt 1 ]; then
ncpus=1
fi

if ! [ -f /usr/include/va/va.h ]; then
echo "ERROR: you need VA API headers for this project" > /dev/stderr
exit 1
fi

get_svn_revision() {
LC_ALL=C svn info $1 | sed -n 's/Revision: \([0-9]*\)/\1/p' 2>/dev/null
}

update_svn_tree() {
local rev="$1"
shift 1
for dir in ${1+"$@"}; do
if [ `get_svn_revision $dir` -ne $rev ]; then
echo "Updating $dir"
svn update --ignore-externals -r $rev $dir >/dev/null
fi
done
}

ffmpeg_externs="libpostproc libavformat libavcodec libavutil"
dvdnav_externs="libdvdread4 libdvdnav"
if test -d "$dir"; then
cd $dir
has_local_changes=0
for d in "" $ffmpeg_externs $dvdnav_externs; do
if svn status --ignore-externals|grep -vq ^X; then
has_local_changes=1
fi
done
if [ $has_local_changes != 0 ]; then
echo "ERROR: $dir/ already exists and has local changes, please remove it first" > /dev/stderr
exit 1
fi

update_svn_tree $mplayer_rev .
update_svn_tree $ffmpeg_rev $ffmpeg_externs
update_svn_tree $dvdnav_rev $dvdnav_externs
else
svn co --ignore-externals -r $mplayer_rev $svn_host/mplayer/trunk $dir
cd $dir
svn co -r $ffmpeg_rev $svn_host/ffmpeg/trunk/libpostproc
svn co -r $ffmpeg_rev $svn_host/ffmpeg/trunk/libavformat
svn co -r $ffmpeg_rev $svn_host/ffmpeg/trunk/libavcodec
svn co -r $ffmpeg_rev $svn_host/ffmpeg/trunk/libavutil
svn co -r $dvdnav_rev $svn_host/dvdnav/trunk/libdvdread/src libdvdread4
svn co -r $dvdnav_rev $svn_host/dvdnav/trunk/libdvdnav/src libdvdnav
fi

if [ "$last_step" = "extract" ]; then
exit 0
fi

patch -p1 < ../patches/mplayer-vaapi.patch || exit 1
patch -p1 < ../patches/mplayer-vaapi-gma500-workaround.patch || exit 1
patch -p1 < ../patches/mplayer-vdpau.patch || exit 1

if [ "$last_step" = "prepare" ]; then
exit 0
fi

./configure $enable_vaapi $enable_vdpau $enable_gui $enable_freetype $enable_fontconfig $enable_zh ${1+"$@"}

if [ "$last_step" = "configure" ]; then
exit 0
fi

make -j$ncpus

if [ "$last_step" = "build" ]; then
exit 0
fi

exit 0
我加入了4个其他参数
如果不需要修改就无视掉这一段
接下来执行就可以了
sh ./checkout-patch-build.sh
等待中
... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

等待完成,先别急着安装,先测试一下

代码: 全选

cd mplayer-vaapi
./mplayer -fs -vo vaapi:gl -va vaapi /path to test file
如果不成功那就要从其他地方找答案了..如果没有问题的话就

代码: 全选

 sudo checkinstall -D --install=yes --fstrans=no --pakdir "$HOME/Desktop" \
--pkgname mplayer --backup=no --deldoc=yes --deldesc=yes --delspec=yes --default \
--pkgversion "3:1.0~svn-`grep "#define VERSION" version.h | cut -d"-" -f2`"
这样会在桌面产生一个deb包

到这里就全部结束了
我正在上传我的deb包
效果图一个问题viewtopic.php?f=74&t=257015

国内的朋友用这个地址下载包吧,虽然不确实各位能不能用
http://cid-08202cb1f4f23167.skydrive.li ... Linux?uc=1
国外的朋友用
http://www.mediafire.com/?t2xulzmkttk
请大家来我的BLOG坐坐
Ubuntu Notes
MSN : wdstudio@live.cn
dukeduan
帖子: 104
注册时间: 2007-09-11 10:12
来自: Yunnan

Re: 我也来折腾 vaapi硬解

#2

帖子 dukeduan » 2010-02-15 12:08

楼主辛苦。
:em11 :em11 :em11
********
人穷志短
马瘦毛长
********
头像
qkbeyond
帖子: 1486
注册时间: 2010-01-03 12:38
来自: 你他妈找死啊
联系:

Re: 我也来折腾 vaapi硬解

#3

帖子 qkbeyond » 2010-02-15 14:31

看着 小鸟额心里发颤
  • 我希望我的心上人也能理解这一点,这一切的开始并不是为了什么价值、责任、过去或是未来,这一切甚至不是为了现在,这一切只是源于passion。
头像
ericcantone
帖子: 149
注册时间: 2009-09-30 19:59

Re: 我也来折腾 vaapi硬解

#4

帖子 ericcantone » 2010-02-15 16:35

:em11
太感谢lz了
我用的是4850,可以硬解的把?
等lz的deb包了
delectate
帖子: 18311
注册时间: 2008-01-09 22:41

Re: 我也来折腾 vaapi硬解

#5

帖子 delectate » 2010-02-15 16:46

n卡来支持lz了

希望lz继续努力,共勉了
wudaown
帖子: 131
注册时间: 2008-04-03 12:46
来自: http://wdstudio.blogbus.com/
联系:

Re: 我也来折腾 vaapi硬解

#6

帖子 wudaown » 2010-02-15 23:37

ericcantone 写了::em11
太感谢lz了
我用的是4850,可以硬解的把?
等lz的deb包了
已经传好了
国内的朋友用这个地址下载包吧,虽然不确实各位能不能用
http://cid-08202cb1f4f23167.skydrive.li ... Linux?uc=1
国外的朋友用
http://www.mediafire.com/?t2xulzmkttk
不过我还是建议各位自己编译试一下,毕竟我编译的时候还有考虑到我系统的环境
不过大家可以试一试我的吧,当然前提是安装那些必要的软件
请大家来我的BLOG坐坐
Ubuntu Notes
MSN : wdstudio@live.cn
wudaown
帖子: 131
注册时间: 2008-04-03 12:46
来自: http://wdstudio.blogbus.com/
联系:

Re: 我也来折腾 vaapi硬解

#7

帖子 wudaown » 2010-02-15 23:38

ericcantone 写了::em11
太感谢lz了
我用的是4850,可以硬解的把?
等lz的deb包了
话说我的是785G HD4200的集显
请大家来我的BLOG坐坐
Ubuntu Notes
MSN : wdstudio@live.cn
lsl330
帖子: 294
注册时间: 2008-09-25 19:58

Re: 我也来折腾 vaapi硬解

#8

帖子 lsl330 » 2010-02-16 0:35

mark,就是不知道板载3300能不能用
wudaown
帖子: 131
注册时间: 2008-04-03 12:46
来自: http://wdstudio.blogbus.com/
联系:

Re: 我也来折腾 vaapi硬解

#9

帖子 wudaown » 2010-02-16 1:12

lsl330 写了:mark,就是不知道板载3300能不能用
3300我还真不清楚..不过应该不可以我记得是UVD2的显卡才可以的

而且是从4XXX 开始UVD2的

3XXX系统应该是UVD的
请大家来我的BLOG坐坐
Ubuntu Notes
MSN : wdstudio@live.cn
头像
jiangkero
帖子: 704
注册时间: 2008-07-14 10:15

Re: 我也来折腾 vaapi硬解

#10

帖子 jiangkero » 2010-02-16 12:59

我等菜鸟还是等官方的更新吧 :em06 :em06
lucasp0927
帖子: 3
注册时间: 2010-02-20 13:21

Re: 我也来折腾 vaapi硬解

#11

帖子 lucasp0927 » 2010-02-20 13:24

終於可以了,感謝幫忙。發現幾個問題,解非1080p的檔案時色調常常偏藍,1080時有時有馬賽克狀的雜訊。暫停再播放有時xorg會當掉。
另外本人用的是ati HD3650 驅動是10.02。9.11不行。
wudaown
帖子: 131
注册时间: 2008-04-03 12:46
来自: http://wdstudio.blogbus.com/
联系:

Re: 我也来折腾 vaapi硬解

#12

帖子 wudaown » 2010-02-22 18:43

lucasp0927 写了:終於可以了,感謝幫忙。發現幾個問題,解非1080p的檔案時色調常常偏藍,1080時有時有馬賽克狀的雜訊。暫停再播放有時xorg會當掉。
另外本人用的是ati HD3650 驅動是10.02。9.11不行。
难道阁下安装我的方法成功了?
蓝的问题我在另外一个帖子有提到 .. 那是没办法的 ..
不知道阁下有没有试过MKV封装的动画 .. 效果极佳
话说3650不适UVD第一代吗 ..
请大家来我的BLOG坐坐
Ubuntu Notes
MSN : wdstudio@live.cn
lucasp0927
帖子: 3
注册时间: 2010-02-20 13:21

Re: 我也来折腾 vaapi硬解

#13

帖子 lucasp0927 » 2010-02-22 20:51

wudaown 写了:
lucasp0927 写了:終於可以了,感謝幫忙。發現幾個問題,解非1080p的檔案時色調常常偏藍,1080時有時有馬賽克狀的雜訊。暫停再播放有時xorg會當掉。
另外本人用的是ati HD3650 驅動是10.02。9.11不行。
难道阁下安装我的方法成功了?
蓝的问题我在另外一个帖子有提到 .. 那是没办法的 ..
不知道阁下有没有试过MKV封装的动画 .. 效果极佳
话说3650不适UVD第一代吗 ..
可是我看 /var/log/Xorg.0.log 有UDV2耶。硬解時不論格式,在畫面沒有變化的地方(例如背景)過了一段時間總是會出現色調偏差的情形,不知道是什麼問題。不過除此之外播放非常順暢。畫面撕裂情況也比以前好很多。
头像
zhu527812567
帖子: 883
注册时间: 2009-11-17 12:29
联系:

Re: 我也来折腾 vaapi硬解

#14

帖子 zhu527812567 » 2010-02-22 21:01

9.11是明确说不行的
9.10 9.12可行 更新的- -各位如果不怕Xorg HANG掉就去试吧

UVD2 除了一个RS是UVD,HD开头的都是UVD2,AMD为了让大家买新产品而做的。。。

LZ辛苦 其实OPEN AMR和X264与编译关系不大

另外你67的X264?那不是SVN中的 现在X264是84. 而且还没编译的Mplayer哪来要链接65的X264...

另外BD我记得是要HANG掉的
wudaown
帖子: 131
注册时间: 2008-04-03 12:46
来自: http://wdstudio.blogbus.com/
联系:

Re: 我也来折腾 vaapi硬解

#15

帖子 wudaown » 2010-02-28 12:52

zhu527812567 写了:9.11是明确说不行的
9.10 9.12可行 更新的- -各位如果不怕Xorg HANG掉就去试吧

UVD2 除了一个RS是UVD,HD开头的都是UVD2,AMD为了让大家买新产品而做的。。。

LZ辛苦 其实OPEN AMR和X264与编译关系不大

另外你67的X264?那不是SVN中的 现在X264是84. 而且还没编译的Mplayer哪来要链接65的X264...

另外BD我记得是要HANG掉的
各种各样的问题很多 .. 我也头晕了 .. 话说我以前的3650怎么没UVD2呢 . .汗
请大家来我的BLOG坐坐
Ubuntu Notes
MSN : wdstudio@live.cn
回复