Ubuntu x64版编译安装ffmpeg,mplayer,x264全教程[原创]支持VDPAU(高清硬解)

Totem,mplayer,sopcast,realplayer,bmp
回复
头像
lxr1234
帖子: 721
注册时间: 2009-04-10 11:15
来自: 三民主义国国民权利省我的选择市中共下台镇

Ubuntu x64版编译安装ffmpeg,mplayer,x264全教程[原创]支持VDPAU(高清硬解)

#1

帖子 lxr1234 » 2010-07-30 20:41

这个是针对Ubuntu 10.04 AMD64的安装ffmpeg,mplayer,x264全教程,包括VDPAU
Ubuntu 10.10AMD64也是可以的。
更新历史

20/7/2011 --完善了打包过程。
16/7/2011--一次小的修改。
28/1/2011--添加一点内容。
24/1/2011--该了一下排版,修改了一下内容。
17/1/2011--一次小的修改,改一下排版。
11/1/2011--一次小的修改,改一下排版。
12/12/2010--一次小的修改,改正一个笔误。
21/11/2010 --大的修改,条理化,VDPAU和普通版分开。
5/8/2010 --一次小修改,增加了冲突包警示。
16/8/2010 --一次小修改
VDPAU版在二楼。
目前mplayer仍然使用svn,编译mplayer时要把ffmpeg的代码拷贝进去。!
感谢诸位的提醒,因为我学业问题,无法保送,有可能不会再有定时的修改了。
libxvidcore4-dev 这个包在10.10里面是libxvidcore-dev 这个名字,谢谢55楼的提醒。
感谢71 楼 ReiFFEXzyx
73 楼 nyfair

这里有些问题:
1.73 楼 的nyfair阁下认为“x264已经把libavformat和swscale吃进来很久了,先编译ffmpeg再编译x264比较好“,先编译ffmpeg是因为我希望能调用x264。
2..73 楼 的nyfair阁下说明了mplayer分裂,按照我目前的理解mplayer2和mplayer都不错,mplayer2主要区别就是用动态库的方式使用ffmpeg从而较大程度脱离了读ffmpeg的源代码的依赖
普通版
我的工作根目录为~/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,分别选中它们,在新利得菜单->软件包->锁定软件包
上次由 lxr1234 在 2012-06-26 21:05,总共编辑 37 次。
强烈反对M$的ARM Secure Boot 锁定要求,大家请签名反对
http://www.fsf.org/campaigns/secure-boo ... cted-boot/
头像
lxr1234
帖子: 721
注册时间: 2009-04-10 11:15
来自: 三民主义国国民权利省我的选择市中共下台镇

Re: Ubuntu 10.04 x64版编译安装ffmpeg,mplayer,x264全教程[原创]

#2

帖子 lxr1234 » 2010-07-30 20:42

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)解决,可能要几次才行。
附件
debian_ffmpeg.tar.gz
(3.65 KiB) 已下载 194 次
mp_debian.tar.gz
(2.79 KiB) 已下载 185 次
vdpau.png
这个不是1080P的
这个不是1080P的
vdpau3.png
上次由 lxr1234 在 2012-12-27 12:47,总共编辑 41 次。
强烈反对M$的ARM Secure Boot 锁定要求,大家请签名反对
http://www.fsf.org/campaigns/secure-boo ... cted-boot/
yansheng1003
帖子: 83
注册时间: 2008-07-26 14:13

Re: Ubuntu 10.04 x64版编译安装ffmpeg,mplayer,x264全教程[原创]

#3

帖子 yansheng1003 » 2010-07-30 20:42

哦,verygod 帮顶
头像
tenzu
论坛版主
帖子: 36924
注册时间: 2008-11-21 20:26

Re: Ubuntu 10.04 x64版编译安装ffmpeg,mplayer,x264全教程[原创]

#4

帖子 tenzu » 2010-07-31 13:08

我是来人工置顶的
rediscover
帖子: 3173
注册时间: 2010-01-13 23:26

Re: Ubuntu 10.04 x64版编译安装ffmpeg,mplayer,x264全教程[原创]

#5

帖子 rediscover » 2010-07-31 20:16

真的好东西不需要加精华也可以一直置顶,教程区就有这样的例子。 :em11
Here I am.
Ubuntu 桌面培训 - 全中文官方文档,含汉化截图,提供PDF
头像
lxr1234
帖子: 721
注册时间: 2009-04-10 11:15
来自: 三民主义国国民权利省我的选择市中共下台镇

Re: Ubuntu 10.04 x64版编译安装ffmpeg,mplayer,x264全教程[原创]

#6

帖子 lxr1234 » 2010-07-31 20:29

那我也来自动顶一下
强烈反对M$的ARM Secure Boot 锁定要求,大家请签名反对
http://www.fsf.org/campaigns/secure-boo ... cted-boot/
头像
snowtown86
帖子: 1239
注册时间: 2009-06-13 16:01

Re: Ubuntu 10.04 x64版编译安装ffmpeg,mplayer,x264全教程[原创]

#7

帖子 snowtown86 » 2010-07-31 21:28

人工掷腚
头像
lxr1234
帖子: 721
注册时间: 2009-04-10 11:15
来自: 三民主义国国民权利省我的选择市中共下台镇

Re: Ubuntu 10.04 x64版编译安装ffmpeg,mplayer,x264全教程[原创]

#8

帖子 lxr1234 » 2010-08-02 13:20

每日一顶
强烈反对M$的ARM Secure Boot 锁定要求,大家请签名反对
http://www.fsf.org/campaigns/secure-boo ... cted-boot/
头像
黄美姬
帖子: 8428
注册时间: 2009-10-08 11:15
来自: 大城市铁岭

Re: Ubuntu 10.04 x64版编译安装ffmpeg,mplayer,x264全教程[原创]

#10

帖子 黄美姬 » 2010-08-02 13:44

lxr1234 写了:每日一顶
:em05 :em05
我们是命运的妓女,它把我们都嫖了

N卡驱动:http://www.nvidia.cn/Download/index.aspx?lang=cn
极品飞车:http://www.geforce.cn/optimize/optimal- ... ts-450-ops
孤岛危机优化设置:http://www.geforce.cn/optimize/optimal- ... tx-450-ops
:cp /etc/skel/.bashrc ~/
PS1="\[\e]2;\u@\H \w\a\e[32;1m\]\T$\[\e[0m\] "
http://cdimage.ubuntu.com/
http://releases.ubuntu.com/
头像
iorikyox
帖子: 92
注册时间: 2010-04-02 16:16

Re: Ubuntu 10.04 x64版编译安装ffmpeg,mplayer,x264全教程[原创]

#12

帖子 iorikyox » 2010-08-04 13:29

现感谢下,再慢慢看。
头像
lxr1234
帖子: 721
注册时间: 2009-04-10 11:15
来自: 三民主义国国民权利省我的选择市中共下台镇

Re: Ubuntu 10.04 x64版编译安装ffmpeg,mplayer,x264全教程[原创]

#13

帖子 lxr1234 » 2010-08-05 13:42

有重要内容更新,自己顶一下
强烈反对M$的ARM Secure Boot 锁定要求,大家请签名反对
http://www.fsf.org/campaigns/secure-boo ... cted-boot/
头像
lxr1234
帖子: 721
注册时间: 2009-04-10 11:15
来自: 三民主义国国民权利省我的选择市中共下台镇

Re: Ubuntu 10.04 x64版编译安装ffmpeg,mplayer,x264全教程[原创]

#14

帖子 lxr1234 » 2010-08-08 14:12

自己顶一下
强烈反对M$的ARM Secure Boot 锁定要求,大家请签名反对
http://www.fsf.org/campaigns/secure-boo ... cted-boot/
头像
lxr1234
帖子: 721
注册时间: 2009-04-10 11:15
来自: 三民主义国国民权利省我的选择市中共下台镇

Re: Ubuntu 10.04 x64版编译安装ffmpeg,mplayer,x264全教程[原创]

#15

帖子 lxr1234 » 2010-08-16 15:20

自己顶一下
强烈反对M$的ARM Secure Boot 锁定要求,大家请签名反对
http://www.fsf.org/campaigns/secure-boo ... cted-boot/
回复