我也来折腾 vaapi硬解
发表于 : 2010-02-14 17:35
恩,我这里的内容是到处搜刮的,自己在选用适合自己的用就好
首先准备x264
下载需要的所有软件
这样x264就算是编译,安装好了
接下来准备live555
然后是 libopencore-amr
有两个方法安装
在ubuntu 9.04要从medibuntu安装
ubuntu 9.10就方便多了
然后准备解码包
下面算是正式开始弄vaapi了
先下载vaapi并且安装
http://www.splitted-desktop.com/~gbeauchesne/libva/
然后把显卡驱动链接到vaapi的文件夹
ATI 会得到
Intel 会得到
Nvidia 我就不清楚了 ,不过应该是一样的一个.so文件
其实N卡根本不需要vaapi,毕竟已经有vdpau了
然后安装xvba-video - XvBA backend for VA API
http://www.splitted-desktop.com/~gbeauc ... vba-video/
然后安装libdirectfb-1.2-0
应该得到一下结果
可是mplayer 调用的是 libdirectfb-1.0.so.0
那就把libdirectfb-1.2.so.0链接到libdirectfb-1.0.so.0
接下来安装libmad0
我们已经有了libx264了
得到
可是mplayer调用的是libx264.so.65
所以在建立链接
到这里准备工作都差不多了
接下来下载mplayer-vaapi源码
准备编译mplayer在这之前我们需要修改一下checkout-patch-build.sh,在这个文件中默认./configure时使用的参数是
如果你和我一样还需要其他参数的话就要修改了
比如我的
如果不需要修改就无视掉这一段
接下来执行就可以了
... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
等待完成,先别急着安装,先测试一下
如果不成功那就要从其他地方找答案了..如果没有问题的话就
这样会在桌面产生一个deb包
到这里就全部结束了
我正在上传我的deb包
效果图一个问题viewtopic.php?f=74&t=257015
国内的朋友用这个地址下载包吧,虽然不确实各位能不能用
http://cid-08202cb1f4f23167.skydrive.li ... Linux?uc=1
国外的朋友用
http://www.mediafire.com/?t2xulzmkttk
首先准备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
接下来准备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
有两个方法安装
在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
代码: 全选
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并且安装
http://www.splitted-desktop.com/~gbeauchesne/libva/
然后把显卡驱动链接到vaapi的文件夹
代码: 全选
/usr/X11R6/lib/modules/dri
ls
代码: 全选
fglrx_dri.so
代码: 全选
psb_drv_video.so
其实N卡根本不需要vaapi,毕竟已经有vdpau了
代码: 全选
sudo ln -s /usr/X11R6/lib/modules/dri/fglrx_dri.so /usr/lib/va/drivers/
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
那就把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
代码: 全选
sudo aptitude install libmad0
代码: 全选
ls /usr/lib | grep libx264
代码: 全选
libx264.a
libx264.so
libx264.so.67
所以在建立链接
代码: 全选
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
然后安装mplayer 编译环境和 libdrm-devcheckout-patch-build.sh mplayer-vaapi NEWS patches README.txt
代码: 全选
sudo apt-get build-dep mplayer libdrm-dev
代码: 全选
--enable-vaapi
--disable-vdpau
比如我的
我加入了4个其他参数#!/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
如果不需要修改就无视掉这一段
接下来执行就可以了
等待中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包
效果图一个问题viewtopic.php?f=74&t=257015
国内的朋友用这个地址下载包吧,虽然不确实各位能不能用
http://cid-08202cb1f4f23167.skydrive.li ... Linux?uc=1
国外的朋友用
http://www.mediafire.com/?t2xulzmkttk