这里介绍了 ffmpeg x86(32位)静态库的编译方法。 如果你想编译成 动态库, 加编译参数 --enable-shared --disable-static 即可。

另外,我会在另一篇文章中介绍 x64位的编译方法。
 


主要参考:http://blog.csdn.net/szu030606/article/details/7953130
这篇文章记录的已经很详细了,但在编译过程中还是碰到了问题,现记录下来,修改的部分以红色字体来表示。
  1.   

准备

首先 下载安装 MinGW, 比较赞的是,现在它提供自动化的安装配置程序,相比以前大大简化了安装过程,连fstab都帮你配置了。

安装完成后编辑 MinGW\msys\1.0\msys.bat 批处理, 在文件最前面加入一行,调用 Visual Studio的 vcvarsall.bat 批处理设置环境变量

  1. call  "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"  

本文地址: http://blog.csdn.net/wangjia184/article/details/7931164

接着在MinGW的下载站点上 下载安装 g++,我下载的版本是4.6.2,覆盖到MinGW目录即可.

http://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.6.2-1/gcc-c++-4.6.2-1-mingw32-bin.tar.lzma/download


然后下载 yasm Win32 版本,将文件重命名并分别复制2份到 MinGW\bin\yasm.exe 和 MinGW\bin\nasm.exe , 后面很多编译的项目依赖于它们.

执行msys.bat, 在命令行窗口中切换到打算编译的目录。比如我的在L盘, 则使用 cd /L/ 进入, 其它文件命令与Linux一致。

准备活动到此结束,下面就开始漫长的编译过程了。

本文地址: http://blog.csdn.net/wangjia184/article/details/7931164

编译依赖项(下面的版本号是我编译的时候的版本号,不一定必须是这个版本号)

1. Zlib 1.2.7

下载源代码 http://zlib.net/ 解压后:

  1. cd zlib-1.2.7/  
  2. make -f win32/Makefile.gcc  
  3. cp -iv zlib1.dll /mingw/bin  
  4. cp -iv zconf.h zlib.h /mingw/include  
  5. cp -iv libz.a /mingw/lib  
本文地址: http://blog.csdn.net/wangjia184/article/details/7931164
2. libgsm 1.0.13-3

下载源代码, http://libgsm.sourcearchive.com/解压后:

  1. cd gsm/  
  2. make  

编译到一半的时候出现 fchmod 和 fchown 的编译错误,不管它,继续执行:

  1. mkdir /mingw/include/gsm  
  2. cp inc/gsm.h /mingw/include/gsm  
  3. cp lib/libgsm.a /mingw/lib  

本文地址: http://blog.csdn.net/wangjia184/article/details/7931164
3. LAME 3.99.5

下载源代码, http://sourceforge.net/projects/lame/files/lame/, 解压后:

  1. ./configure --prefix=/mingw --enable-expopt=full  
  2. make  
  3. make install  
本文地址: http://blog.csdn.net/wangjia184/article/details/7931164
4. LIBOGG 1.3.0

下载源代码,http://xiph.org/downloads/,解压后:

  1. ./configure --prefix=/mingw  
  2. make  
  3. make install  
本文地址: http://blog.csdn.net/wangjia184/article/details/7931164

5. LIBVorbis 1.3.3

下载源代码,http://xiph.org/downloads/,解压后:

  1. ./configure --prefix=/mingw  
  2. make  
  3. make install  
本文地址: http://blog.csdn.net/wangjia184/article/details/7931164

6. LIBSpeex 1.2rc1

下载源代码,http://xiph.org/downloads/,解压后:

  1. ./configure --prefix=/mingw  
  2. make  
  3. make install  
本文地址: http://blog.csdn.net/wangjia184/article/details/7931164

7. LIBTheora 1.1.1

下载源代码,http://xiph.org/downloads/,解压后:

  1. ./configure --prefix=/mingw  
  2. make  
  3. make install  
本文地址: http://blog.csdn.net/wangjia184/article/details/7931164

8. FAAC 1.2.8

下载源代码,http://www.audiocoding.com/downloads.html,解压后:

首先编辑 Makefile.am 文件,将第一行 改为 

SUBDIRS = include libfaac

然后修改configure.in文件, 找到最后一段的 AC_OUTPUT, 修改为

AC_OUTPUT(libfaac/Makefile include/Makefile Makefile)

执行:

  1. ./bootstrap
  2. ./configure --prefix=/mingw 
  3. make 
  4. make install  
本文地址: http://blog.csdn.net/wangjia184/article/details/7931164

9. xvidcore 1.3.2

下载源代码,http://www.xvid.org,解压后:

  1. cd xvidcore/build/generic  
  2. ./configure --prefix=/mingw  

执行到这里后,搜索xvidcore/build/generic 目录下面所有文件中的 -mno-cygwin 这个选项, 这个选项已经不被GCC支持,全部删除后继续。
  1. make  
  2. make install  
  3. cp -iv \=build/xvidcore.dll.a /mingw/lib/libxvidcore.dll.a  
本文地址: http://blog.csdn.net/wangjia184/article/details/7931164

10. x264 snapshot-20120830-2245

下载源代码,http://www.videolan.org/developers/x264.html,解压后:

  1. configure --prefix=/mingw --enable-win32thread --extra-cflags="-DX264_VERSION=20100422"  
  2. make  
  3. make install  
  4. cp -iv x264.h x264_config.h /mingw/include  
  5. cp -iv libx264.a /mingw/lib  
  6. cp -iv x264.pc /mingw/lib/pkgconfig  
本文地址: http://blog.csdn.net/wangjia184/article/details/7931164

编译ffmpeg 0.11.1

相信有耐心进行到这里的人,已经花了1-2个小时了,这是正常的速度。终于可以编译ffmpeg了.

下载源代码,http://ffmpeg.org,解压后首先配置,光这个自动配置过程也要十分钟左右。
  1. ./configure --prefix=/mingw --enable-gpl --enable-nonfree --enable-postproc --enable-avfilter --enable-w32threads --enable-runtime-cpudetect --enable-memalign-hack --enable-bzlib --enable-libfaac --enable-libgsm --enable-libmp3lame --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-zlib --disable-debug  
然后 make & make install 等着编译结束吧。
注意:make 时可能会碰到:
ar.exe: libavcodec/: Permission denied 或 library.mak *** 的错误,
参考:http://stackoverflow.com/questions/10847106/get-error-while-building-libav-on-windows-using-mingw-and-msys

  1. 删掉除了.git 所有的文件
  2. git config --global core.autocrlf false
  3. git reset --hard
  4. vim ./configure 查看编码 :set ff? 如果是 unix,即可。dos,不行。
  5. make
  6. make install
本文地址: http://blog.csdn.net/wangjia184/article/details/7931164

链接

链接静态库需要注意链接的顺序, 我的VC版本是VS2010
  1. #ifdef __cplusplus  
  2. extern "C" {  
  3. #endif  
  4.   
  5. #include   
  6. #include   
  7. #include   
  8. #include   
  9.   
  10. #ifdef __cplusplus  
  11. }  
  12. #endif  
  13. #pragma comment( lib, "libgcc.a")  
  14. #pragma comment( lib, "libmingwex.a")  
  15. #pragma comment( lib, "libcoldname.a")  
  16. #pragma comment( lib, "libavcodec.a")  
  17. #pragma comment( lib, "libavformat.a")  
  18. #pragma comment( lib, "libavutil.a")  
  19. #pragma comment( lib, "libswscale.a")  
  20. #pragma comment( lib, "libz.a")  
  21. #pragma comment( lib, "libfaac.a")  
  22. #pragma comment( lib, "libgsm.a")  
  23. #pragma comment( lib, "libmp3lame.a")  
  24. #pragma comment( lib, "libogg.a")  
  25. #pragma comment( lib, "libspeex.a")  
  26. #pragma comment( lib, "libtheora.a")  
  27. #pragma comment( lib, "libvorbis.a")  
  28. #pragma comment( lib, "libvorbisenc.a")  
  29. #pragma comment( lib, "libx264.a")  
  30. #pragma comment( lib, "xvidcore.a")  
  31. #pragma comment( lib, "wsock32.lib")  
  32. #pragma comment( lib, "vfw32.lib") 
posted on 2013-03-22 14:04  爱哎唉  阅读(292)  评论(0)    收藏  举报