首先推薦?http://ffmpeg.zeranoe.com/builds/, 這里已經有編譯好的動態連接庫。可惜上面沒靜態鏈接庫。我也試過 DLL2Lib, 但是無法連接LIBCMT庫,只能使用MSVCRT
所以一定要靜態庫的話只能自己編譯了。在Windows上用MinGW編譯真是個痛苦的過程,沒有yum install和apt-get,所有的依賴項要自己找全。
廢話少說,下面是編譯過程,記錄于此。
本文地址: http://blog.csdn.net/wangjia184/article/details/7931164
- ??
準備
首先 下載安裝 MinGW, 比較贊的是,現在它提供自動化的安裝配置程序,相比以前大大簡化了安裝過程,連fstab都幫你配置了。
安裝完成后編輯?MinGW\msys\1.0\msys.bat 批處理, 在文件最前面加入一行,調用 Visual Studio的?vcvarsall.bat?批處理設置環境變量
- 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%2B%2B-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/?解壓后:
- cd?zlib-1.2.7/??
- make?-f?win32/Makefile.gcc??
- cp?-iv?zlib1.dll?/mingw/bin??
- cp?-iv?zconf.h?zlib.h?/mingw/include??
- cp?-iv?libz.a?/mingw/lib??
2.?libgsm?1.0.13-3
下載源代碼,?http://libgsm.sourcearchive.com/,?解壓后:
- cd?gsm/??
- make??
編譯到一半的時候出現?fchmod 和?fchown 的編譯錯誤,不管它,繼續執行:
- mkdir?/mingw/include/gsm??
- cp?inc/gsm.h?/mingw/include/gsm??
- 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/, 解壓后:
- ./configure?--prefix=/mingw?--enable-expopt=full??
- make??
- make?install??
4. LIB OGG 1.3.0
下載源代碼,http://xiph.org/downloads/,解壓后:
- ./configure?--prefix=/mingw??
- make??
- make?install??
5. LIBVorbis 1.3.3
下載源代碼,http://xiph.org/downloads/,解壓后:
- ./configure?--prefix=/mingw??
- make??
- make?install??
6. LIBSpeex 1.2rc1
下載源代碼,http://xiph.org/downloads/,解壓后:
- ./configure?--prefix=/mingw??
- make??
- make?install??
7. LIBTheora?1.1.1
下載源代碼,http://xiph.org/downloads/,解壓后:
- ./configure?--prefix=/mingw??
- make??
- make?install??
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)
執行:
- ./configure?--prefix=/mingw??
- make??
- make?install??
9. xvidcore?1.3.2
下載源代碼,http://www.xvid.org,解壓后:
- cd?xvidcore/build/generic??
- ./configure?--prefix=/mingw??
執行到這里后,搜索 xvidcore/build/generic 目錄下面所有文件中的? -mno-cygwin 這個選項, 這個選項已經不被GCC支持,全部刪除后繼續。
- make??
- make?install??
- cp?-iv?\=build/xvidcore.dll.a?/mingw/lib/libxvidcore.dll.a??
10. x264?snapshot-20120830-2245
下載源代碼,http://www.videolan.org/developers/x264.html,解壓后:
- configure?--prefix=/mingw?--enable-win32thread?--extra-cflags="-DX264_VERSION=20100422"??
- make??
- make?install??
- cp?-iv?x264.h?x264_config.h?/mingw/include??
- cp?-iv?libx264.a?/mingw/lib??
- cp?-iv?x264.pc?/mingw/lib/pkgconfig??
編譯ffmpeg 0.11.1
相信有耐心進行到這里的人,已經花了1-2個小時了,這是正常的速度。終于可以編譯ffmpeg了.
下載源代碼, http://ffmpeg.org ,解壓后首先配置,光這個自動配置過程也要十分鐘左右。
- ./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 等著編譯結束吧。 本文地址: http://blog.csdn.net/wangjia184/article/details/7931164
鏈接
鏈接靜態庫需要注意鏈接的順序, 我的VC版本是VS2010- #ifdef?__cplusplus??
- extern?"C"?{??
- #endif??
- ??
- #include?<libavcodec/avcodec.h>??
- #include?<libavformat/avformat.h>??
- #include?<libavutil/avutil.h>??
- #include?<libswscale/swscale.h>??
- ??
- #ifdef?__cplusplus??
- }??
- #endif??
- #pragma?comment(?lib,?"libgcc.a")??
- #pragma?comment(?lib,?"libmingwex.a")??
- #pragma?comment(?lib,?"libcoldname.a")??
- #pragma?comment(?lib,?"libavcodec.a")??
- #pragma?comment(?lib,?"libavformat.a")??
- #pragma?comment(?lib,?"libavutil.a")??
- #pragma?comment(?lib,?"libswscale.a")??
- #pragma?comment(?lib,?"libz.a")??
- #pragma?comment(?lib,?"libfaac.a")??
- #pragma?comment(?lib,?"libgsm.a")??
- #pragma?comment(?lib,?"libmp3lame.a")??
- #pragma?comment(?lib,?"libogg.a")??
- #pragma?comment(?lib,?"libspeex.a")??
- #pragma?comment(?lib,?"libtheora.a")??
- #pragma?comment(?lib,?"libvorbis.a")??
- #pragma?comment(?lib,?"libvorbisenc.a")??
- #pragma?comment(?lib,?"libx264.a")??
- #pragma?comment(?lib,?"xvidcore.a")??
- #pragma?comment(?lib,?"wsock32.lib")??
- #pragma?comment(?lib,?"vfw32.lib")?