您的位置:首页 > 其它

Ubuntu 编译安装ffmpeg,mplayer,x264全教程支持VDPAU(高清硬解)

2017-03-17 14:53 696 查看
这个是针对Ubuntu 10.04 AMD64的安装ffmpeg,mplayer,x264全教程,包括VDPAU

Ubuntu 10.10AMD64也是可以的。

目前mplayer仍然使用svn,编译mplayer时要把ffmpeg的代码拷贝进去。!

libxvidcore4-dev 这个包在10.10里面是libxvidcore-dev 这个名字

普通版
我的工作根目录为~/src
确定之前没有安装过ffmpeg,mplayer,x264,有则卸载。

代码:

sudo apt-get --purge remove ffmpeg mplayer x264
安装依赖包
1.偷懒法
这里输出了文件是为了记录所安装的依赖包,以便日后删除。

代码:

sudo apt-get build dep ffmpeg mplayer x264 >>aptlog.log
2.仔细法

代码:

sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaad-dev libfaac-dev libmp3lame-dev libtheora-dev libvorbis-dev libxvidcore4-dev libschroedinger-dev libspeex-dev libgsm1-dev libgtk2.0-dev

下载需要的源代码包
1.x264

代码:

git clone git://git.videolan.org/x264.git

2.ffmpeg

代码:

git clone git://git.videolan.org/ffmpeg.git

3.libnut(AMD64特殊需求)

代码:

svn checkout svn://svn.mplayerhq.hu/nut/src/trunk libnut

4.mplayer

代码:

svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer

把它们都下载在工作根目录下
开始编译
1.编译x264
切换到工作根目录,后输入

代码:

 cd x264

./configure --enable-shared

make

sudo checkinstall --fstrans=no --install=yes --pkgname=x264 --pkgversion "3:0.git`date +%Y%m%d`-0.0ubuntu1"

sudo ldconfig

有问题就一路回车
有双核的或以上的可以在make后加-j 2参数,提高效率。(3核用-j 3,类推)。这里”j"后的空格可加可不加,还有数字大于核心数也没问题,就是不要太大了,应CPU而异。

代码:

make -j 2

2.编译libnut(注意,它一定要在ffmpeg之前编译,否则ffmpeg会报错,当然只要不加--enable-libnut就行了)
切换到工作根目录,后输入

代码:

cd libnut

gedit config.mak



代码:

CFLAGS += -Os -fomit-frame-pointer -g -Wall

改成

代码:

CFLAGS += -Os -fomit-frame-pointer -Wall -fPIC

保存
编译

代码:

make libnut

make prefix=/usr install-libnut

3.编译ffmpeg
切换到工作根目录,后输入

代码:

cd ffmpeg

./configure-enable-gpl --enable-shared --enable-postproc --enable-nonfree  --enable-x11grab --enable-bzlib  --enable-libfaac --enable-libmp3lame --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libxvid --enable-zlib --disable-ffplay --disable-debug
--disable-indev=oss --disable-outdev=oss --enable-libvpx

代码:

sudo checkinstall --fstrans=no --install=yes --pkgname=ffmpeg --pkgversion "0.8

有问题就一路回车
4.编译mplayer
需要复制一份ffmpeg的代码到其目录下(不是工作根目录),文件名要叫 ffmpeg 而不是ffmpeg-0.8之类的!不要使用软链接!
编译它就比较简单了。
切换到工作根目录

代码:

cd mplayer

./configure --disable-jack --disable-fbdev --disable-svga --disable-aa --disable-ossaudio --disable-esd --yasm=/usr/bin/yasm --disable-caca --disable-dga2 --disable-dga1 --disable-v4l2 --disable-directfb

代码:

sudo checkinstall --fstrans=no --install=yes --pkgname=mplayer --pkgversion "1.0rc4"

最后为了防止系统将自己的老旧包(新的也一样)替换调我们辛辛苦苦编译的包,

在新利得中分别搜索ffmpeg,mplayer,x264,分别选中它们,在新利得菜单->软件包->锁定软件包

VDPAU版

注意Nvidia显卡用户请使用非开源驱动。请要先安装ibvdpau1可以安装nvidia-cg-toolkit并检测/usr/include/vdpau下是否有两个.h文件,因为nvidia的驱动有vdpau的so文件

目前(Linux-3.4.11)xen的dom0下不可用
有双核的或以上的可以在make后加-j 2参数,提高效率。(3核用-j 3,类推)。这里”j"后的空格可加可不加,还有数字大于核心数也没问题,就是不要太大了,应CPU而异。

我的工作根目录为~/src
确定之前没有安装过ffmpeg,mplayer,有则卸载。

代码:

sudo apt-get --purge remove ffmpeg mplayer x264

安装依赖包
1.偷懒法
这里输出了文件是为了记录所安装的依赖包,以便日后删除。

代码:

sudo apt-get build dep ffmpeg mplayer  >>aptlog.log

2.仔细法

代码:

sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaad-dev libfaac-dev libmp3lame-dev libtheora-dev libvorbis-dev libxvidcore-dev libschroedinger-dev libspeex-dev libgsm1-dev libgtk2.0-dev autoconf

在现在的NVIDIA驱动中,VDPAU头文件不再包含,需要编译或安装libvdpau-dev,方法如下:

代码:

git clone git://anongit.freedesktop.org/~aplattner/libvdpau

cd libvdpau

./autogen.sh

./configure --prefix=/usr

make

主体软件
1.ffmpeg

代码:

git clone git://git.videolan.org/ffmpeg.git

2.libnut(不要也行,编译ffmpeg时去掉--enable-libnut)

代码:

svn checkout svn://svn.mplayerhq.hu/nut/src/trunk libnut

3.mplayer

代码:

svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer

把它们都下载在工作根目录下
开始编译
1.编译libnut(注意,它一定要在ffmpeg之前编译,否则ffmpeg在AMD64系统下会报错,幷不是VDPAU所必需)
切换到工作根目录,后输入

代码:

cd libnut

gedit config.mak



代码:

CFLAGS += -Os -fomit-frame-pointer -g -Wall

改成

代码:

CFLAGS += -Os -fomit-frame-pointer -g -Wall -fPIC

保存
编译

代码:

make libnut

make prefix=/usr install-libnut

2.编译ffmpeg
这里有两个方法,标准打包与定制方法
i)标准
复制附件中的ff_mplayer.tar.gz下的debian文件到ffmpeg的源代码下
切换到工作根目录,后输入

代码:

mv ffmpeg ffmpeg-0.8

cd ffmpeg-0.8

fakeroot debian/rules binary

代码:

mv ffmpeg ffmpeg-0.8

tar zcvf  ffmpeg-0.8.tar.gz  ffmpeg-0.8/ --exclude-vcs

cd ffmpeg-0.8

dh_make -f ../ ffmpeg-0.8.tar.gz

fakeroot debian/rules binary

ii)定制
切换到工作根目录,后输入

代码:

cd ffmpeg

./configure-enable-gpl --enable-shared --enable-postproc --enable-nonfree  --enable-x11grab --enable-bzlib  --enable-libfaac --enable-libmp3lame --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libxvid --enable-zlib --disable-ffplay --disable-debug
--disable-indev=oss --disable-outdev=oss --enable-libvpx

代码:

make -j 2

打包

代码:

tar zcvf ffmpeg

代码:

sudo checkinstall --fstrans=no --install=yes --pkgname=ffmpeg --pkgversion "0.8"

有问题就一路回车

3.编译mplayer
需要复制一份ffmpeg的代码到其目录下(不是工作根目录),文件名要叫 ffmpeg 而不是ffmpeg-0.8之类的!不要使用软链接!
i)标准
解压复制附件中的 mp_debian.tar.gz 下的debian文件到ffmpeg的源代码下
切换到工作根目录,后输入

代码:

cd mplayer

fakeroot debian/rules binary

安装工作根目录下的 mplayer 或 mplayer-nogui 即可。

ii)定制
编译它就比较简单了。
切换到工作根目录

代码:

cd mplayer

./configure --disable-jack --disable-fbdev --disable-svga --disable-aa --disable-ossaudio --disable-esd --yasm=/usr/bin/yasm --disable-caca --disable-dga2 --disable-dga1 --disable-v4l2 --disable-directfb --enable-vdpau

代码:

make -j 2

这里屏蔽了一些滤镜和音频输出,其实不屏蔽也行,只是我为了好看还有那些是不常用的。
打包

代码:

sudo checkinstall --fstrans=no --install=yes --pkgname=mplayer --pkgversion "1.0rc4"

最后为了防止系统将自己的老旧包(新的也一样)替换调我们辛辛苦苦编译的包,
在新利得中分别搜索ffmpeg,mplayer,分别选中它们,在新利得菜单->软件包->锁定软件包。
还有如果没打make命令编译,打包时会自动编译。
注意:如果直接使用mplayer播放时,不仅要指定

代码:

-vo vdpau
,还要指定解码器

代码:

-vc ffh264vdpau

具体请看mplayer的man page,大概在2819行那里。
知识补充
H.264才是一种视频的编码格式,x264只是一个开源的H.264编码器(encoder),不是一种视频的编码格式。
libnut是nut容器的支持可,nut容器是开源的,不过很少有见到使用。
看看效果,图片是调整过分辨率的,我的屏幕是1080P的。成功后如果是VDPAU可处理的格式(如MPEG-1、MPEG-2、MPEG-4 AVC(H.264)、VC-1和WMV3/WMV9)mplayer的CPU占用律是不会超过5%(和显卡有关)
如果ffmpeg检测不到alsa,mplayer检测不到pulse audio,就安装libasound2-dev 和 libpulse-dev 。
对于jack 我做一点说明,因为mplayer的jack部分代码没有做到线程安全,所以有的时候mplayer会卡在,是因为mplayer的jack client 死了,这时只有重新开始(stop)就行了,也可增大jackd的buffer.另外这个问题也会带来花屏,也只能重新开始(stop)解决,可能要几次才行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: