转:LInux下如何安装ffmpeg
http://www.xxlinux.com/linux/article/accidence/internet/20081226/14739.html
安装好了ffmpeg后,如果你使用ffmpeg工具去把某个视频文件转成h264视频编码、mp3音频编码or其他ffmpeg自身不带的xxx 编码类型,就会看到报错信息,unknown encoder 'xxx'。此刻你需要的只要去安装其他的编码器就行了,本质上其实是把其他的编码器以库的形式安装好,例如,把正确的libx264.so or libx264.a存放在/usr/lib下 or /usr/local/lib下。
举两个例子吧,视频方面的编码器就拿h264来说,音频方面的例子就拿mp3(mp3lame)来说。
扫盲,Linux下安装一个正规的软件,一般都是三部曲,①、【./configure】(加一些可能的参数,比如enable一些功能,disable 一些功能,究竟有哪些功能可以开启和关闭呢?一般通过./configure --help命令来查询),②、【make】(编译),③、【sudo make install】(把生成的二进制应用程序文件和.so和.a复制到/usr/local/下)
一、h264
动手搜一下ffmpeg的工程代码库,会发现每个codec都有一下几个成员变量,但是有好几个codec缺少encoder,h264就是其中一个了。 先不管什么原因,ffmpeg没有原生的支持h264,但是你可以查看一下avcodec_register_all这个API,会发现一大片的 REGISTER_ENCODER(XXX, xxx)
REGISTER_DECODER(XXX, xxx)
这里分很多块,例如/* video codecs */,/* audio codecs */,/* external libraries */
但 是你在/* video codecs */这一块却看不到h264的REGISTER_ENDECODER (H264, h264);这句话,如果你坚持往下翻,你会在/* external libraries */这块里面发现REGISTER_ENCODER (LIBX264, libx264);所以ffmpeg是有给h264准备好了接口的,但是需要第三方库来支持。
回到重点,怎么装呢?
1.先下载x264的工程代码,【git clone git://git.videolan.org/x264.git】。
2.进入x264目录,然后./configure --help看看它的帮助信息,我们这里需要的是x264以.so or .a的形式来支援ffmpeg,所以一般就关注shared和static关键词就可以了。执行./configure --enable-shared --enable-static就行了。
3.完了make && sudo make install就可以了。
你会发现我们在./configure的时候没有指定前缀--prefix=/usr,很明显,libx264.so和libx264.a就会复制到/usr/local/lib下去,记住这里,等下会因为这里要做一些修改。
二、mp3lame
上面说了h264,相信mp3lame理解起来就简单多了。
1.先下载mp3lame的工程代码,http://sourceforge.net/projects/lame/files/lame/,为什么这里 要显得多余的讲一下mp3lame呢,是这样的。大家可以看到x264用的是git,mp3lame是用的sourceforge,不妨再多说一个 faac(也是一种原生ffmpeg不支持的音频codec),faac用的是http://sourceforge.net/projects /faac/files/faac-src/,所以每一种codec或者很重要的软件都有一个团队或者社区在维护,所以需要什么东西,尽量去 sourceforge或者git上找,其他地方找的可能不够新,可能不完整不正确。
2.然后也是./configure --help先,看看哪些功能是我们需要打开关闭的
3.完了make && sudo make install就可以了。
很明显,我们又没有指定--prefix-/usr,所以mp3lame的libmp3lame.so和libmp3lame.a就被赋值到了/usr/local/lib下了。
三、重新编译ffmpeg
1.进入ffmpeg目录,./configure --enable-gpl --enable-libx264 --enable-libmp3lame,然后就生成了新的makefile了。
2.执行sudo make clean && make sudo make install。
3.这样ffmpeg就被重新编译了,完了就可以验证一下,使用ffmpeg工具,把某个视频文件中的视频流转码成h264格式,音频流转码成mp3lame格式,不妨试试。
4.如果你真的尝试了,你应该会看到类似于“libxxx.so找不到”的错误提示,解决办法如下:
(1).表象:ffmpeg运行的时候试图去链接libxxx.so,但是却找不到相应的libxxx.so。
(2).疑惑:我之前明明安装了libxxx.so的。
(3).原因:程序运行的时候默认是去/usr/lib下找libxxx.so,但是我们之前安装的确实在/usr/local/lib下,所以造成这个报错。
(4).解决办法:有很多,我说一种我亲测过的。
在/etc/ld.so.conf文件中添加一行/etc/ld.so.conf,当然是用root用户啦。然后执行ldconfig命令使得刚才的修改生效,完了再运行ffmpeg的转码命令试试,可以了吧。
之前我尝试过用ffplay来播放一个h264编码的视频,结果当然是可以播放,我就天真的以为ffmpeg支持h264了,其实不然,ffmpeg主要 还是用来解码,所以部分格式的encoder却没有,所以才会有第三方库支援,为什么原生ffmpeg不支持某些格式呢?原因我暂时不知道。为了解决 ffmpeg可以编码h264这个问题,我在网上搜索一些资料,然后总结成上文,在此过程中我还收获了一些Linux的知识,也已经写出。
1、lame
lame-3.97.tar.gz
Url:http://sourceforge.net/project/showfiles.php?group_id=290&package_id=309
安装方法如下: Java代码
- tar -zxvf lame-3.97.tar.gz
- cd lame-3.97
- ./configure --enable-shared --prefix=/usr
- make
- make install
tar -zxvf lame-3.97.tar.gzcd lame-3.97./configure --enable-shared --prefix=/usrmakemake install
2、libogg
libogg-1.1.3.tar.gz
Url:http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz
安装方法如下:
Java代码
- ./configure --prefix=/usr
- make
- make install
./configure --prefix=/usrmakemake install
3、libvorbis
libvorbis-1.1.2.tar.gz
Url:http://downloads.xiph.org/releases/vorbis/libvorbis-1.1.2.tar.gz
安装方法如下:
Java代码
- ./configure --prefix=/usr
- make
- make install
./configure --prefix=/usrmakemake install
4、xvid
xvidcore-1.1.3.tar.gz
Url:http://downloads.xvid.org/downloads/xvidcore-1.1.3.tar.gz
安装方法如下:
Java代码
- tar zvxf xvidcore-1.1.3.tar.gz
- cd xvidcore-1.1.3/build/generic
- ./configure --prefix=/usr
- make
- make install
tar zvxf xvidcore-1.1.3.tar.gzcd xvidcore-1.1.3/build/generic./configure --prefix=/usrmakemake install
5、x264
x264-snapshot-20071107-2245.tar.bz2
Url:http://www.videolan.org/developers/x264.html
ftp://ftp.videolan.org/pub/videolan/x264/snapshots/
安装方法如下: Java代码
- bunzip2 x264-snapshot-20070913-2245.tar.bz2
- tar xvf x264-snapshot-20070913-2245.tar
- ./configure --prefix=/usr --enable-shared
- make
- make install
bunzip2
x264-snapshot-20070913-2245.tar.bz2tar xvf
x264-snapshot-20070913-2245.tar./configure --prefix=/usr
--enable-sharedmakemake install
6、libdts
libdts-0.0.2.tar.gz
[url]http://download.videolan.org/pub/videolan/libdca/0.0.2/libdca-0.0.2.tar.gz [/url]
安装方法: Java代码
- tar zxvf libdts-0.0.2.tar.gz
- cd libdts-0.0.2
- ./configure --prefix=/usr
- make
- make install
tar zxvf libdts-0.0.2.tar.gzcd libdts-0.0.2./configure --prefix=/usrmakemake install
7、a52
a52dec-0.7.4.tar.gz
http://liba52.sourceforge.net/downloads.html
安装方法: Java代码
- ./configure --prefix=/usr
- make
- make install
./configure --prefix=/usrmakemake install
8、faad2
faad2-2.6.1.tar.gz
http://www.audiocoding.com/downloads.html
安装方法 Java代码
- autoreconf -vif
- ./configure --prefix=/usr --with-mp4v2 --enable-shared
- make
- make install
autoreconf -vif./configure --prefix=/usr --with-mp4v2 --enable-sharedmakemake install
9、faac
faac-1.26.tar.gz
http://linux.softpedia.com/progDownload/FAAC-Download-554.html
安装方法: Java代码
- tar zxvf faac-1.26.tar.gz
- cd faac
- ./bootstrap
- ./configure --prefix=/usr
- make
- make install
tar zxvf faac-1.26.tar.gzcd faac./bootstrap./configure --prefix=/usrmake make install
10、amr-nb
amrnb-6.1.0.4.tar.bz2
http://ftp.penguin.cz/pub/users/utx/amr/amrnb-6.1.0.4.tar.bz2
安装方法: Java代码
- ./configure --prefix=/usr
- make
- make install
./configure --prefix=/usrmakemake install
11、amr-wb
amrwb-7.0.0.1.tar.bz2
http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.1.tar.bz2
安装方法: Java代码
- ./configure --prefix=/usr
- make
- make install
./configure --prefix=/usrmakemake install
12、lib52
a52dec-0.7.4.tar.gz
http://liba52.sourceforge.net/downloads.html
如果前面的安装一切顺利的话,恭喜你,可以安装ffmpeg了
安装ffmpeg
Java代码
- ./configure --prefix=/usr --enable-gpl --enable-shared --enable-libmp3lame --enable-libogg --enable-libvorbis --enable-libamr-nb --enable-libamr-wb --enable-libxvid --enable-libx264 --enable-liba52 --enable-liba52bin --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-pp --enable-pthreads --disable-ffserver --disable-ffplay
- make
- make install