ffmpeg的编译大全

转载 2007年09月14日 11:29:00

ffmpeg的编译大全

最近互联网视频共享的网站很火,公司也想搞类似的网站,初步是用fms+ffmpeg形式

fms负责在线录制,播放,ffmpeg则在后台处理上传的资源转换成一定的格式。

为了让ffmpeg支持的格式尽量多,所以特把我的编译笔记分享一下

环境:redhat as4

1。首先获取ffmpeg

很多人找不到怎么下载,其实之前ffmpeg可以通过cvs下载,不过最近他已经换成了更加强大的svn

如何使用SVN我这里不再介绍,网上还有大量的安装和使用的文章可以借鉴,这里简单罗列几个SVN辅助的软件:

SubVersion,从 http://subversion.tigris.org/ 下载,支持linux,我们这里就装这个

TortoiseSVN,从 http://tortoisesvn.tigris.org/ 下载,是很不错的SVN客户端程序,为windows外壳程序集成到windows资源管理器和文件管理系统的Subversion客户端,用起来很方便,commit动作变得就像Winrar右键压缩一样方便。


ok,那我们先装subversion,记住最好之前装过apr和apr-util,在apache.org网站能下到

wget http://subversion.tigris.org/downloads/subversion-1.3.2.tar.gz
tar zvxf subversion-1.3.2.tar.gz
cd subversion-1.3.2
./configure --with-apr=/usr/local/apr-httpd --with-apr-util=/usr/local/apr-util-httpd/
make
make install


到此,我们就可以通过svn命令获取最新的ffmpeg了

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

你会发现在你所在的目录,自动出现一个ffmpeg的目录,就是你下载的源代码。


我们还不能这么快编译ffmpeg,应该如果要让ffmpeg支持更多格式的转换,还需做一些前期工作


2.支持mp3,linux当然是lame,下载解压

cd lame-3.96.1
./configure --enable-shared --prefix=/usr
这里推荐尽量装在/usr下,默认是装在/usr/local下。这样ffmpeg编译都能顺利的找到库文件


3.支持Ogg Vorbis:
as4自带相应的rpm包,你可以安装一下如下rpm包
libvorbis, libvorbis-devel,libogg, libogg-devel

http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz
http://downloads.xiph.org/releases/vorbis/libvorbis-1.1.2.tar.gz
./configure --prefix=/usr
make
make install


4.支持xvid x264,现在最流行的两种高质量的压缩格式
xvid的编译安装
wget http://downloads.xvid.org/downloads/xvidcore-1.1.0.tar.gz
tar zvxf xvidcore-1.1.0.tar.gz
./configure --prefix=/usr
make
make install

x264的获取同样是采用svn方式,看来svn取代cvs不远了
svn co svn://svn.videolan.org/x264/trunk x264
cd x264
./configure --prefix=/usr --enable-shared
make
make install


5.AC3和dts编码的支持
as4系统似乎已经支持ac3编码,编译的时候只要加--enable-a52 --enable-gpl参数就行

libdts编译参数http://debian.unnet.nl/pub/videolan/libdts/0.0.2/libdts-0.0.2.tar.gz

./configure --prefix=/usr
make
make install


6.mpg4 aac格式支持,由于服务器还针对手机用户服务,所以,类似aac,mpg4铃声格式的支持,我们也得做。这里我们安装faad2和faac就行
下载请到http://www.audiocoding.com/modules/mydownloads/

FAAD2的编译
cd faad2

echo > plugins/Makefile.am                        
echo > plugins/xmms/src/Makefile.am
sed -i '/E_B/d' configure.in


autoreconf -vif
./configure --prefix=/usr --with-mp4v2 --enable-shared
make
make install

faac的编译
cd faac

cat bootstrap | tr -d '/015' > bootstrap.new && cp bootstrap.new bootstrap


chmod +x bootstrap
./bootstrap
./configure --prefix=/usr --with-mp4v2 --enable-shared
make
make install


7.支持3gp格式,这也是现在好多手机支持的格式,因为手机用户是我们的主要用户,所以也得支持编译

编译的时候加上--enable-amr_nb --enable-amr_wb参数就行,根据编译系统的提示,所以我们得下载一

些编译3gp所需得文件。

wget http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-510.zip
解压以后把里面的文件都拷贝到libavcodec/amrwb_float

wget http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-510.zip
解压以后把里面的文件都拷贝到libavcodec/amr_float


好了,基本ffmpeg支持的格式,我们基本都做好前期准备了,下面是ffmpeg的编译


./configure --prefix=/usr --enable-gpl --enable-shared --enable-mp3lame --enable-amr_nb --enable-amr_wb --enable-amr_if2 --enable-libogg --enable-vorbis --enable-xvid --enable-a52 --enable-a52bin --enable-faadbin --enable-dts --enable-pp --enable-faad --enable-faac --enable-x264 --enable-pthreads --disable-ffserver --disable-ffplay
make
make install

补充1:
关于3gp的编译,如果大家要编译--enable-amr_nb-fixed,那就不能跟--enable-amr_nb同时编译,我不大清楚这两者到底有什么区别,似乎fixed是修正版,管他呢,编译的方法:
wget http://www.3gpp.org/ftp/Specs/archive/26_series/26.073/26073-510.zip
解压以后把里面的文件都拷贝到libavcodec/amr目录下

修改libavcodec/amr/makefile 找到CFLAGS = -Wall -pedantic-errors -I. $(CFLAGS_$(MODE)) -D$(VAD) 换成CFLAGS = -Wall -I. $(CFLAGS_$(MODE)) -D$(VAD) -DMMS_IO

整体编译参数就是
./configure --prefix=/usr --enable-gpl --enable-shared --enable-mp3lame --enable-amr_nb-fixed --enable-amr_wb --enable-amr_if2 --enable-libogg --enable-vorbis --enable-xvid --enable-a52 --enable-a52bin --enable-dts --enable-pp --enable-faad --enable-faadbin --enable-faac --enable-x264 --enable-pthreads --disable-ffserver --disable-ffplay
make
make install

补充2:
有朋友说在当在cpu是x86的情况下,不能编译过去,我这里没发生过这情况,如果你真编译不过去,可以试着加上cpu=cpu

ok,一个强大的ffmpeg编译好了,不过目前管方的ffmpeg还不支持wma9和rmvb,不过网上有很多解决方法,大家去自己找找。


阅读全文(328) | 回复(0) | TrackBack(0) | 编辑 | 精华
 

 

 

 #install lame
tar zxvf lame-3.97.tar.gz
cd lame-3.97
./configure --prefix=/usr
make
make install
cd ..

#install xvidcore
tar zvxf xvidcore-1.1.2.tar.gz
cd xvidcore-1.1.2/build/generic
./configure --prefix=/usr
make
make install

#install x264
tar xvf x264.tar
cd x264
./configure --prefix=/usr --enable-shared
make
make install
cd ..

#install libdts
#mv libdts-0.0.2.tar.tar libdts-0.0.2.tar.gz
tar zxvf libdts-0.0.2.tar.gz
cd libdts-0.0.2
./configure --prefix=/usr
make
make install
cd ..

# tar zxvf a52dec-0.7.4.tar.gz
# cd a52dec-0.7.4
# ./configure --enable-shared --prefix=/usr
# make
# make install

//安装官方版本
#install faad2
tar xvf 修改后的版本
cd
autoreconf -vif
./configure --prefix=/usr --with-mp4v2 --enable-shared
make
sudo make install

//安装 Comsenz 版本
#tar zxvf faad2-2.5.tar.gz (Comsenz版:tar jxvf faad2-2.5-Comsenz.tar.bz2)
#cd faad2
#autoreconf -vif
#./configure --prefix=/usr --with-mp4v2 --enable-shared
#make
#make install


//安装官方版本
#install faac
tar zxvf faac-1.25.tar.gz
cd faac
sed -i '/[2de].M/d' configure.in
echo "AC_OUTPUT(common/Makefile common/mp4v2/Makefile libfaac/Makefile frontend/Makefile include/Makefile Makefile)" >> configure.in
autoreconf -vif
./configure --prefix=/usr
make &&
make install

//安装 Comsenz 版本
#tar xjvf faac-1.25-Comsenz.tar.bz2
#cd faac-Comsenz
#autoreconf -vif
#./configure --prefix=/usr --with-mp4v2 --enable-shared
#如果下面的 make 出现 undefined reference to `_Unwind_Resume'
  调整 frontend/Makefile 文件中的 编译选择 -Bdynamic -lgcc_s
#make
#make install

#到www.3gpp.org 下载 amr
26204-520.zip into libavcodec/amrwb_float
cp -f makefile.gcc makefile
26073-530.zip into libavcodec/amr
26104-540.zip into libavcodec/amr_float
cp -f makefile.gcc makefile

#编译 ffmpeg


./configure --help
./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

转3gp命令

ffmpeg -i 1.flv -y -b 20 -s sqcif -r 10 -acodec libamr_nb -ab 12.2k -ac 1 -ar 8000 3.3gp

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1753019

相关文章推荐

mysql乐观锁总结和实践

最近学习了一下数据库的悲观锁和乐观锁,根据自己的理解和网上参考资料总结如下:   悲观锁介绍(百科): 悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修...

mysql隔离级别与悲观锁、乐观锁

1、什么是悲观锁,乐观锁 悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。但随之而来的就是数据库性能的大量开销,特别是对长事务而言,这样的开销往往无法承受。而乐观锁机制在一定程度...

“80后”婚恋观:谁说嫁大款就能改变命运?

“80后”婚恋观:谁说嫁大款就能改变命运?    女孩:司爽  出生:1980年  年龄:26岁  职业:助教  籍贯:上海人  独生子女证:已领  认识司爽是由于我以前所采访的一位单身男人,邀请我参...

MySQL 乐观锁 简例

乐观锁与悲观锁不同的是,它是一种逻辑上的锁,而不需要数据库提供锁机制来支持 当数据很重要,回滚或重试一次需要很大的开销时,需要保证操作的ACID性质,此时应该采用悲观锁 而当数据对即时的一...

java 图片转txt文本,文本转换图片

import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.BufferedWriter; im...

淘宝api

淘宝网API开放平台:http://www.taobao.com/theme/tao_source/ 淘宝宣传 http://user.qzone.qq.com/107772649/blog/1...

<转>,防止刷新/后退引起的重复提交问题的Java Token代码,非Struts

Struts本身有一套完善的防止重复提交表单的Token(令牌)机制,但笔者目前的项目自写的framework没有用到Struts,故也得自写防止用户因为后退或者刷新来重复提交表单内容的Token机制...

myeclipse中svn图标状态(同步标记)不显示问题的解决方法

今天从SVN服务器上down下工程后,发现myeclipse中项目上没有了*号标记,查看文件时,文件后面的版本号 、文件的状态图标等等都不见了。   解决方法如下: windows ->prefe...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)