您的位置:首页 > 其它

Windows系统使用minGW+msys 编译ffmpeg 0.5的全过程详述

2010-01-17 20:12 936 查看
前言:

FFmpeg 0.5已经发布快一年了。一直没有在原有的软件中使用。现在要在软件中增加一些对流行格式的支持及修改原有的一些bug. 比如MKV编辑码。原本希望将新版本中的新功能移植到老版本中,毕竟老版本在应用过程中修改了很多地方。但是经过研读新版代码发现新版本的框架结构发生了很大的变化,如果不是编解码专家移植是有很大难度的。所以就先整体编译新版,再将旧版的修改之处移植过来,应该是个不错的选择。

在网上找了很多相关文档,但是在编译过程中还是遇到了一些问题。现将编译过程写下来,希望对研究FFmpeg 的新手有些帮助。专家级的高手就不必看了。呵呵。

一.环境配置
1.下载并安装 MinGW-5.1.4.exe (http://jaist.dl.sourceforge.net/sourceforge/mingw/MinGW-5.1.4.exe),安装时选中 g++, mingw make。建议安装到c:/mingw.
2.下载并安装 MSYS-1.0.11-rc-1.exe (http://jaist.dl.sourceforge.net/sourceforge/mingw/MSYS-1.0.11-rc-1.exe),安装结束时会以命令行方式提示输入MinGW的安装路径,输入c:/MinGW, msys建议安装到c:/msys, 默认是c:/msys-1.0, 可以手动改为c:/msys。
3.下载gcc-4.3.2-tdm-1-core.zip (http://ftp3.ie.freebsd.org/pub/sourceforge/t/td/tdm-gcc/gcc-4.3.2-tdm-1-core.zip),解压后覆盖到 c:/mingw 安装目录. minGW-5.1.4 默认安装的版本是3.4.5.

二.下载 ffmpeg 0.5 (http://ffmpeg.mplayerhq.hu/releases/ffmpeg-0.5.tar.bz2)
1.解压后拷贝到c:/msys/home/目录下。 (C:/msys/home/ffmpeg-0.5)
2.用文本编辑器打开源码目录下的 configure (C:/msys/home/ffmpeg-0.5/configure) 文件,搜索两处 pr 全部替换为 print。
3.运行c:/msys.bat,进入c:/msys/home/ffmpeg-0.5源码目录,创建release目录 (madir release) 和 debug 目录 (mkdir debug) 目录,视需求编译 release 或 debug 版本:
4.进入c:/msys/home/ffmpeg-0.5/release 目录下执行: ../configure --disable-static --enable-shared --enable-small --enable-memalign-hack --enable-gpl --extra-cflags=-I/local/include --extra-ldflags=-L/local/lib
5.或进入c:/msys/home/ffmpeg-0.5/debug 目录下执行: ../configure --disable-static --enable-shared --enable-memalign-hack --enable-gpl --extra-cflags=-I/local/include --extra-ldflags=-L/local/lib --enable-debug=3 --disable-optimizations --disable-stripping
6.make
7.make install

注:参数解释
a.--extra-ldflags=-L<prefix>/lib --extra-cflags=-I<prefix>/include

如果你把库安装在了非gcc的缺省寻找路径,你必须向FFmpeg的configure脚本传递这些路径信息。
b.--enable-small

optimize for size
c.--enable-nonfree
Yes, FFmpeg recently changed the --enable-libfaac to require --enable-nonfree due to some inconsisent licensing
declarations in the faac source. You can also workaround this by not enabling AAC in the wizard. They have a
native AAC encoder in progress, but it is not ready and enabled yet.

三.支持x264 (--enable-libx264)
1.下载 x264 原始码(http://www.imagemagick.org/download/delegates/ffmpeg/x264-1024283.tar.bz2) (x264-snapshot-20100115-2245.tar.bz2这个源码编译不过,不知道为什么,有时间仔细研究研究。)
2.解压后拷贝到c:/msys/home/目录下 (c:/msys/home/x264-1024283)
3.进入c:/msys/home/x264-1024283 目录下执行: ./configure --prefix=/usr/local --enable-shared --disable-asm
4.make
5.make install

四.支持xvid (--enable-libxvid)
1.下载 xvid 原始码(http://www.imagemagick.org/download/delegates/ffmpeg/xvidcore-1.2.2.tar.bz2)
2.解压后拷贝到c:/msys/home/目录下 (c:/msys/home/xvidcore)
3.进入c:/msys/home/xvidcore/build/generic 目录下执行: ./configure --prefix=/usr/local --enable-shared
4.make
5.make install

五.支持MP3 (--enable-libmp3lame)
1.下载 MP3 原始码(http://www.imagemagick.org/download/delegates/ffmpeg/lame-398-2.tar.gz)
2.解压后拷贝到c:/msys/home/目录下 (c:/msys/home/lame-398-2)
3.进入c:/msys/home/lame-398-2 目录下执行: ./configure --prefix=/usr/local --enable-shared
4.make
5.make install

六.支持FAAC (--enable-libfaac)
1.下载 FAAC 原始码(http://www.imagemagick.org/download/delegates/ffmpeg/faac-1.28.tar.bz2)
2.解压后拷贝到c:/msys/home/目录下 (c:/msys/home/faac-1.28)
3.进入c:/msys/home/faac-1.28 目录下执行./bootstrap
4../configure --prefix=/usr/local --enable-shared --without-mp4v2

(FAAC 无需编入 mp4 容器支持,封入 mp4 容器的工作由 ffmpeg 负责)
5.make
6.make install

七.支持FAAD (--enable-libfaad)
1.下载 FAAD 原始码(http://www.imagemagick.org/download/delegates/ffmpeg/faad2-2.7.tar.bz2)
2.解压后拷贝到c:/msys/home/目录下 (c:/msys/home/faad2-2.7)
3.进入c:/msys/home/faad2-2.7 目录下执行 autoreconf -vif
注:编译FAAD需要使用autoreconf, 下载msysDTK-1.0.1.exe 安装到c:/msys.
4../configure --prefix=/usr/local --enable-shared --without-mp4v2
5.make
6.make install

八.支持gsm (--enable-libgsm)
1.下载 gsm 原始码(http://www.imagemagick.org/download/delegates/ffmpeg/gsm-1.0.13.tar.gz)
2.解压后拷贝到c:/msys/home/目录下 (c:/msys/home/gsm-1.0-pl13)
3.进入c:/msys/home/gsm-1.0-pl13 目录下执行: ./configure --prefix=/usr/local --enable-shared
4.make
注:make编译出错(make: *** [bin/toast] Error 1), 忽视这个错误,不影响。
5.cp c:/msys/home/gsm-1.0-pl13lib/libgsm.a c:/msys/local/lib
6.cp c:/msys/home/gsm-1.0-pl13lib/inc/gsm.h c:/msys/local/include

九.libamr-nb (--enable-libamr-nb)
1.下载 libamr-nb 原始码(http://ftp.penguin.cz/pub/users/utx/amr/amrnb-7.0.0.2.tar.bz2)
2.解压后拷贝到c:/msys/home/目录下 (C:/msys/home/amrnb-7.0.0.2)
3.下载26104-700.zip (http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-700.zip), 将这个zip包放到c:/msys/home/amrnb-7.0.0.2 目录下面
4.下载unzip-5.51-1-bin.zip (http://downloads.sourceforge.net/gnuwin32/unzip-5.51-1-bin.zip),解压后将unzip.exe到/mingw/bin下。
5.进入c:/msys/home/amrnb-7.0.0.2 目录下执行: ./configure --prefix=/usr/local --enable-shared
6.make
7.make install

十.libamr-wb (--enable-libamr-wb)
1.下载 libamr-wb 原始码(http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.3.tar.bz2)
2.解压后拷贝到c:/msys/home/目录下 (C:/msys/home/amrwb-7.0.0.3)
3.下载26204-700.zip (http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-700.zip), 将这个zip包放到c:/msys/home/amrwb-7.0.0.3 目录下面
4.下载unzip-5.51-1-bin.zip (http://downloads.sourceforge.net/gnuwin32/unzip-5.51-1-bin.zip),解压后将unzip.exe到/mingw/bin下。(如果步骤9中做了这个工作,这里就不用做了)
5.进入c:/msys/home/amrwb-7.0.0.3 目录下执行: ./configure --prefix=/usr/local --enable-shared
6.make
7.make install

十一.最后编译ffmpeg 0.5
1.进入c:/msys/home/ffmpeg-0.5/release
2. ../configure --disable-static --enable-shared --enable-small --enable-memalign-hack --enable-gpl --extra-cflags=-I/local/include --extra-ldflags=-L/local/lib --enable-libgsm --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-nonfree --enable-libxvid --enable-libx264 --enable-libamr-nb --enable-libamr-wb
3.make
4.make install

十二. 编译出lib 文件

以上方式默认不能编译出 .lib文件。如果希望在vc++调用ffmpeg 库,要用到相应的 .lib 文件。可以用以下方式编译。

1.在msys.bat开头添加一句话:call "C:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/bin/VCVARS32.BAT"

根据自己vc7实际路径修改以上路径。在重复步骤十一。

先写到这里,在以后的应用实践中不断补充。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: