2010_3_1最新 完整 FFMPEG 编译详解
在网上看了很多编译详解,都很零散。经过自己的编译,解决一些BUG,在此分享自己的一些经验... 话不多说了!直接上贴。
第一步:准备编译平台。
需要 一个 MinGW 和 一个 MSYS 安装包 以及 MSYS_DTK.
当前最新是版本:
MinGW5.1.6.exe [url=http://sourceforge.net/projects/mingw/files/]下载[/url]
msysDTK-1.0.1.exe [url=http://downloads.sourceforge.net/mingw/msysDTK-1.0.1.exe]下载[/url]
Msys1.0.11.exe [url=http://downloads.sourceforge.net/mingw/MSYS-1.0.11.exe]下载[/url]
按照以上顺序安装 :
建议:(可选)
把 MinGw5.1.6 安装到 F:/MinGw (为了路径简短起见)
把Msys1.0.11 安装到 F:/MinGw/Msys(为了方便起见)
(有些机器不会在/MinGw/Msys/etc中产生正确的fstab文件,因此确保
/MinGw/Msys/etc中具有一个fstab文件 内容为:F:/MinGw /minwg 前者为你的MinGw安装目录 后面对应MinGw目录)
第二步:准备编译工具
需要一些编译工具,以便能够编译需要的库。
1.二进制工具(xx.exe文件)
pr.exe (在coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2 包的bin目录中)[url=http://sourceforge.net/projects/mingw/files /MSYS Base System/_obsolete/coreutils-5.97-MSYS-1.0.11-2/coreutils- 5.97-MSYS-1.0.11-snapshot.tar.bz2/download]下载[/url]
(ffmpeg中 configure执行需要用到)
复制到 MinGW/bin中
(注意:是MinGW目录中的bin)
SDL 工具 [url=http://www.libsdl.org/docs.php]下载[/url] (ffmpeg 需要用到)
在包中的四个目录:bin lib include share 一起复制到 MinGw 目录下
(bin 中包含 有 SDL.dll 和 sdl-config)
在sdl-config中修改 第一行为 prefix=/mingw
([url=http://www.ffmpeg.com.cn/index.php/Ffplay使用事例]参考[/url])
unzip.exe 工具 [url=unzip-5.51-1.exe][url=http://sourceforge.net/projects/gnuwin32 /files/unzip/]下载[/url][/url] (安装 libamrnb libamrwb 需要用到)
解压 unzip-xxx-bin.zip 后在bin 中复制 unzip.exe 到 MinGw/Msys/bin 中
(注意:是 Msys目录中的bin)
wget.exe 工具 [url=http://ftp.gnu.org/gnu/wget/]下载[/url] (安装 libamrnb libamrwb 需要用到)
解压后 在 bin 中拷贝 wget.exe 到 MinGw/Msys/bin 中
(注意:是 Msys目录中的bin)
git.exe 工具 下载(获取x264库需要用到)
安装:[url=http://msysgit.googlecode.com/files/Git-1.6.5.1-preview20091022.exe]Git-1.6.5.1-preview20091022.exe[/url]
2.源码安装包(需要编译安装的工具包)
autoconf [url=http://ftp.gnu.org/gnu/autoconf/]下载[/url]
automake [url=http://ftp.gnu.org/gnu/automake/]下载[/url]
libtool [url=http://ftp.gnu.org/gnu/libtool/]下载[/url]
yasm [url=http://www.tortall.net/projects/yasm/releases/yasm-0.8.0.tar.gz]下载[/url]
下载最新版 然后解压到 Msys目录中的home/Administrator 中
(说明:以后需要执行 'configure' 'make' 'make install' 命令来安装的xx.tag.gz包 都解压到Administrator里 以便控制台中方面路劲的输入)
包的安装:
举例安装 autoconf 包
在Msys命令行中:
cd autoconf 回车 (从 ~ 目录 进入 autoconf 目录)
configure 回车 (执行配置文件)
make 回车 (开始编译)
make install 回车 (安装)
安装 automake包: 动作同上,只是要进入 automake 目录.(cd automake)
第三步:准备一个线程库(不准备编译x264的可以跳过)
pthread包 [url=ftp://sources.redhat.com/pub/pthreads-win32/pthreads- w32-2-8-0-release.tar.gz]下载[/url] ([url=http://ffmpeg.arrozcru.org/wiki/index.php?title=Pthreads]参考[/url])
解压到 MinGw/Msys/home/Administrator的pthread中
在Msys命令行中:
cd pthread 回车
make GC 回车
然后在pthread中找到 pthreadGC.dll 拷贝到 MinGw/bin 和 MinGw/lib 中
...............找到 pthread.h 和 sched.h 拷贝到 MinGw/include 中
(注意有个Bug 打开sched.h line:152 和 line:154 的两个函数的参数类型pid_t 改成 int 这个Bug是自己遇到的,修改并不会影响任何功能,但并没有官方验证)
目前这里就配置好所有的编译环境了!
以下是支持要编译的编解码库:
//===== Mp3lame [url=http://sourceforge.net/projects/lame/files/lame/]下载[/url]
解压到 ~ 目录 (MinGw/Msys/home/Administrator)改名目录为 lame
在Msys安装:
cd lame 回车
configure --enalbe-shared 回车
make 回车
make install 回车
//===== faac 和 faad2 [url=http://www.audiocoding.com/downloads.html]下载[/url] (两个包)
faac 安装:(faac-1.28 需要一个补丁 [url=http://bbs.chinavideo.org/attachment.php?aid=368&k=bdbac83ed608d3697e25e985527c3b9c&t=1267424723&fid=11&sid=ab1ep/jU/kNhVRIt9st/5vPwWJxoQCf7uJGIj3A397qIkfc]faac-1.28.diff[/url] )
解压到 ~ 目录 (MinGw/Msys/home/Administrator)改名目录为 faac
把补丁放到 faac 目录中
在Msys安装:
cd faac 回车
patch -p1 < faac-1.28.diff 回车
bootstrap 回车
configure --with-mp4v2 --enalbe-shared 回车
(不需要MP4 则第一个参数用--without-mp4v2 代替)
make 回车
make install 回车
faad 安装:(faad2-2.7 需要一个补丁 [url=http://bbs.chinavideo.org/attachment.php?aid=369&k=4624ab33cb734713942aafb25213926c&t=1267427156&fid=11&sid=3fa8T1Vt6ibnc+wFOLP4vp0CkKhIQj1NZ+Hpq3RhVaiUQPw]faad2-2.7.diff[/url] )
解压到 ~ 目录 (MinGw/Msys/home/Administrator)改名目录为 faad2
把补丁放到 faad2 目录中
在Msys安装:
cd faad2 回车
patch -p1 < faad2-2.7.diff 回车
(也可以手动修改,注释掉 faad2/frontend/main.c 中
line: 34 的 #define off_t __int64 )
bootstrap 回车
configure --with-mp4vip --enalbe-shared 回车
(第一个参数可选)
configure顺利完成之后
在libfaad/Makefile中修改:
将AM_CFLAGS = -iquote $(top_srcdir)/include
改成:AM_CFLAGS = -I $(top_srcdir)/include
(这个是一个Bug修正 以免出现:
cc1.exe: error: unrecognized command line option "-iquote")
make 回车
make install 回车
//===== amrnb 和 amrwb [url=http://www.penguin.cz/~utx/amr#download]下载[/url]
amrnb安装:
解压到 ~ 目录 (MinGw/Msys/home/Administrator)改名目录为 amrnb
在Msys安装:
cd amrnb 回车
configure --enalbe-shared 回车
make 回车
make install 回车
amrwb安装:
解压到 ~ 目录 (MinGw/Msys/home/Administrator)改名目录为 amrwb
在Msys安装:
cd amrwb 回车
configure --enalbe-shared 回车
make 回车
make install 回车
//===== xvidcore [url=http://www.xvid.org/Downloads.43.0.html]下载[/url]
解压到 ~ 目录 (MinGw/Msys/home/Administrator)改名目录为 xvid
在Msys安装:
cd xvid/build/generic 回车
configure --enalbe-shared 回车
make 回车
make install 回车
//===== H.264
下载x264库:
在Windows 的控制台中输入 :
C:/...> cd F:/mingw/msys/home/Administrator 回车
(切换路径到 Administrator目录)
F:/mingw/msys/home/Administrator > git clone git://git.videolan.org/vlc.git
这时x264包就会下载到mingw/msys/home/Administrator目录中
在Msys安装:
cd x264 回车
configure --enalbe-shared 回车
make 回车
make install 回车
(有个Bug,安装后 在mingw/msys/local/include/x264.h 中
line:209 中 修改 int i_bframe_pyramid; 为int b_bframe_pyramid; 保存)
//**************到这里 有一些常用的编解码库了 下面来编译FFMPEG
FFMPEG [url=http://www.ffmpeg.org/releases/ffmpeg-0.5.tar.bz2]下载[/url]
解压到 ~ 目录 (MinGw/Msys/home/Administrator)改名目录为 ffmpeg
(注意了,编译x264库 需要修改一下 ffmpeg的configure
把 line 1996 :中的 x264_encoder_open加上一个x264版本号,可以从F:/MinGw
/msys/local/bin中的libx264-xx.dll 得知,这里编译得到的是libx264-88.dll
所以 把 line 1996 :中的 x264_encoder_open 改为 x264_encoder_open_88,以解决
编译x264后,编译ffmpeg 提示 libx264 not found.)
在ffmpeg目录中 新建一个文本文件 改名为 cml (无扩展名)
编辑 cml :
configure /
[size=3]--enable-ffplay /
--enable-static /
--enable-memalign-hack /
[/size][size=3]--enable-gpl / [/size]
[size=3]--enable-libmp3lame /
--enable-libfaac /
--enable-libfaad /
--enable-libx264 /
[/size][size=3]--enable-nonfree / [/size][size=3]
--enable-libamr-nb /
--enable-libamr-wb / [/size]
[size=3]--extra-ldflags=-L/usr/local/lib /
--extra-cflags=-I/usr/local/include [/size]
保存.
在Msys中输入:
cml 回车
make 回车
make install 回车
大功告成! 不过xvid不能在ffmpeg编译中使用--enable-shared参数
不然会报错,你可以试试,如果可以,那就是我的机器问题! :-) 愉快
admin 发表于 2010-3-1 03:47 PM
非常完整,不错,谢谢分享!:victory:
lovesai 发表于 2010-3-19 10:29 AM
[b] [url=http://bbs.chinavideo.org/redirect.php?goto=findpost&pid=30236&ptid=7837]1#[/url] [i]golocy[/i] [/b]
请问这是在哪个平台上的编译?如果要应用到WIN32怎么编,编译后要能直接被VC调用的那种
wzyzb 发表于 2010-3-24 03:36 PM
给的链接好多东西都下不了
wzyzb 发表于 2010-3-24 04:46 PM
[b] [url=http://bbs.chinavideo.org/redirect.php?goto=findpost&pid=30236&ptid=7837]1#[/url] [i]golocy[/i] [/b] wget 和SDL 都不知道怎么下载啊 老兄!!
wzyzb 发表于 2010-3-24 07:21 PM
[b] [url=http://bbs.chinavideo.org/redirect.php?goto=findpost&pid=30236&ptid=7837]1#[/url] [i]golocy[/i] [/b] wget下载解压没有/bin目录
wzyzb 发表于 2010-3-26 02:37 PM
[b] [url=http://bbs.chinavideo.org/redirect.php?goto=findpost&pid=30236&ptid=7837]1#[/url] [i]golocy[/i] [/b]
autoconf 编译提示perl is not found
mlinmxf 发表于 2010-3-26 07:23 PM
楼主把你的系统环境先介绍一下啊。你是在win平台下编的?linux下要怎么编呢?
gboystal 发表于 2010-3-27 09:16 AM
搞了一下午,终于编完了。。
jcooper 发表于 2010-4-12 04:38 PM
很好,楼主辛苦了,谢谢总结,其实编译ff这个东西熟悉了就容易多了,难点在于如何用VC在win32平台下编译以获得最高性能
xchinasl2008 发表于 2010-4-21 04:26 PM
为什么我的X264下不下来啊
czt151715 发表于 2010-4-21 09:57 PM
可以下的
地址是:git clone git://git.videolan.org/x264.git
hunter104 发表于 2010-5-28 01:01 PM
enalbe 应该是enable吧?
xshzh 发表于 2010-7-16 09:32 AM
在安装libtool的时候出现:
checking for non-GNU ld... no
configure: error: no acceptable ld found in $PATH
请问是咋回事?执行configure的时候。
谢谢
admin 发表于 2010-7-16 10:45 AM
没有找到“ld.exe”
xshzh 发表于 2010-7-16 11:23 AM
“ld.exe”哪里有下载,谢谢
tocute 发表于 2010-7-29 06:36 PM
請問在 win 7 中操作以上的動作
卻一直出現
Permission Denied
即使用了 chmod 777 結果也是一樣
請問我該如何解決了 謝謝
admin 发表于 2010-7-29 07:24 PM
[quote]Permission Denied[/quote] 这肯定是权限问题了,建议你关闭UAC试试!