http://blog.csdn.net/finewind/article/details/38854517html
若是隻是拿來使用,網上有現成的SDK。但我是想深刻研究FFMPEG代碼,又不熟悉Linux開發環境,所以須要編譯一個在windos平臺下能用VS單步調試的FFMPEG,網上現有資料大部分都是基於很老的版本,不斷摸索,終於成功了。linux
之因此選擇VS2013,是由於VS2013支持大部分C99的特性,不須要改動代碼,也不須要使用C99轉C89的工具。c++
MinGW和yasm是繞不過去的,由於須要使用MinGW來生成config.h,而ffmpeg的彙編語法和VS的不同,所以須要yasm。redis
具體步驟:shell
1. 下載FFMPEG源碼,下載地址:http://ffmpeg.zeranoe.com/builds/;frontend
2. 下載MinGW安裝器,下載地址:http://www.mingw.org/;下載完成後安裝,安裝完成後點運行,標記上如下幾項:ide
而後在Installation菜單下點擊Apply Changes(mingw32-gcc-g++不用選擇);svn
3. 下載yasm,下載地址: http://yasm.tortall.net/ ;下載後更名爲yasm.exe,複製到C:/MinGW/msys/1.0/bin目錄下;函數
4. 配置C:/MinGW/msys/1.0/msys.bat,在此文件的最前面(@echo off以後)添加一行以下內容:工具
call "D:\Program Files(x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat" (依實際安裝路徑修改路徑);
5.重命名 C:/MinGW/msys/1.0/bin/link.exe 爲link_renamed.exe (依實際安裝選擇路徑),這一步是防止這個link.exe與vc的link.exe發生衝突,編譯完成後可修改回來;
6. 配置編譯,雙擊msys.bat,轉到FFMPEG源代碼根目錄下,可運行 ./configure --help查看編譯配置選項,我使用的選項爲:
靜態庫:./configure --enable-static --prefix=./vs2013_build --enable-debug --toolchain=msvc
動態庫:./configure --enable-shared --prefix=./vs2013_build --enable-debug --toolchain=msvc
等待配置完成返回;
7. 輸入 make all 編譯;
8. 輸入make install安裝。
完成,此時生成的頭文件及庫已經在ffmpeg源代碼下的vs2013_build目錄下,使用這個庫,便可在VS下單步進入FFMPEG函數內部。
參考資料:
http://www.cnblogs.com/xylc/p/3683203.html
http://blog.csdn.net/lipengyao2010/article/details/52317243
■yasm編譯x264時候須要http://www.tortall.net/projects/yasm/下載:http://www.tortall.net/projects/yasm/releases/yasm-0.8.0.tar.gz解壓,編譯安裝:./configure –prefix=/mingwmakemake install【基本庫】■zlibhttp://sourceforge.net/projects/mingw/files/下載以下壓縮包:MinGW zlib:libz-1.2.3-1-mingw32-dev.tar.gz將其解壓到C:\MinGW刪除C:\MinGW\lib\libz.dll.a(不然會使用動態連接,須要libz.dll)■bzip2http://sourceforge.net/projects/mingw/files/下載以下壓縮包:MinGW bzip2:bzip2-1.0.5-2-mingw32-dev.tar.gz將其解壓到C:\MinGW刪除C:\MinGW\lib\libbz2.dll.a(不然會使用動態連接,須要libbz-2.dll)■SDLhttp://www.libsdl.org/編譯ffplay時候須要下載:http://www.libsdl.org/release/SDL-devel-1.2.13-mingw32.tar.gz解壓,修改Makefile:CROSS_PATH := /mingw編譯安裝:make cross【FFmpeg基本編譯】源碼取得:svn://svn.mplayerhq.hu/ffmpeg/trunk配置編譯:假設安裝路徑爲/FFmpeg/Release./configure –prefix=/FFmpeg/Release –enable-memalign-hackmakemake install【編解碼庫】假設第三方庫安裝路徑爲/olibs■libgsmGSM support via libgsmGSM 06.10 lossy speech compressionhttp://user.cs.tu-berlin.de/~jutta/toast.html下載gsm-1.0.12.tar.gz解壓,修改Makefile中的CC = gcc -ansi -pedantic爲CC = gcc編譯安裝:make編譯到後來會出錯,但庫已經編譯完成,用以下命令拷貝便可cp lib/libgsm.a /olibs/lib/cp inc/gsm.h /olibs/include/gsm/ffmpeg編譯參數:–enable-libgsm■libmp3lameMP3 encoding via libmp3lamehttp://sourceforge.net/projects/lame/files/下載lame-3.98.3.tar.gz解壓,修改lame-3.98-3/libmp3lame/i386/Makefile.in中下面這行$(ECHO) 「non_pic_object=’$*.o’」 >>$@爲$(ECHO) 「non_pic_object=’ .libs/$*.o’」 >>$@編譯安裝:./configure –prefix=/olibs –disable-shared –enable-static –disable-frontendmakemake installffmpeg編譯參數:–enable-libmp3lame■opencore-amrAMR-NB de/encoding、AMR-WB decoding via libopencore-amrnbhttp://sourceforge.net/projects/opencore-amr/下載opencore-amr-0.1.1.tar.gz(0.1.2編譯須要g++、libstdc++.dll.a)解壓,註釋掉如下Makefile中的幾行./opencore-amr/amrnb/Makefileinstall: libopencore-amrnb.a $(SHLIB)install -d $(DESTDIR)$(PREFIX)/libinstall -m 644 libopencore-amrnb.a $(DESTDIR)$(PREFIX)/lib# install $(SHLIB) $(DESTDIR)$(PREFIX)/libifneq ($(shell uname), Darwin)# ln -sf $(SHLIB) $(DESTDIR)$(PREFIX)/lib/$(SONAME)# ln -sf $(SONAME) $(DESTDIR)$(PREFIX)/lib/libopencore-amrnb.soendif./opencore-amr/amrwb/Makefileinstall: libopencore-amrwb.a $(SHLIB)install -d $(DESTDIR)$(PREFIX)/libinstall -m 644 libopencore-amrwb.a $(DESTDIR)$(PREFIX)/lib# install $(SHLIB) $(DESTDIR)$(PREFIX)/libifneq ($(shell uname), Darwin)# ln -sf $(SHLIB) $(DESTDIR)$(PREFIX)/lib/$(SONAME)# ln -sf $(SONAME) $(DESTDIR)$(PREFIX)/lib/libopencore-amrwb.soendif編譯安裝:make CC=gccmake install PREFIX=/olibsffmpeg編譯參數:–enable-version3 –enable-libopencore-amrnb –enable-libopencore-amrwb■libogg供libvorbis和libtheora用http://www.xiph.org/downloads/下載libogg-1.1.4.tar.gz解壓,編譯安裝:./configure –prefix=/olibs –disable-sharedmakemake install■libvorbisVorbis encoding via libvorbishttp://www.xiph.org/downloads/下載libvorbis-1.2.3.tar.gz解壓,編譯安裝:./configure –prefix=/olibs –disable-shared –with-ogg=/olibsmakemake installffmpeg編譯參數:–enable-libvorbis■libtheoraTheora encoding via libtheorahttp://www.xiph.org/downloads/下載libtheora-1.1.1.zip解壓,編譯安裝:./configure –prefix=/olibs –disable-shared –with-ogg=/olibsmakemake installffmpeg編譯參數:–enable-libtheora■libx264H.264 encoding via x264http://www.videolan.org/developers/x264.htmlftp://ftp.videolan.org/pub/videolan/x264/snapshots/下載最新的源碼包解壓,編譯安裝:./configure –prefix=/olibsmakemake installffmpeg編譯參數:–enable-gpl –enable-libx264■libxvidXvid encoding via xvidcorehttp://www.xvid.org/下載xvidcore-1.2.2.tar.gz解壓,修改:./build/generic/configure: 「libxvidcore. <- 「xvidcore.編譯安裝:cd xvidcore/build/generic./configure –prefix=/olibs –disable-sharedmakemake install刪除/olibs/lib/libxvidcore.dllffmpeg編譯參數:–enable-gpl –enable-libxvid■libfaac、libfaadffmpeg內置已經支持aac編碼、解碼,不須要libfaac、libfaad了,並且libfaac是nonfree的,nonfree是unredistributable即禁止發佈【FFmpeg高級編譯】假設安裝路徑爲/FFmpeg/Release,假設第三方庫所在路徑爲/olibs配置編譯:./configure \–prefix=/FFmpeg/Release \–disable-debug \–disable-static \–enable-shared \–enable-gpl \–enable-version3 \–enable-avfilter \–enable-avfilter-lavf \–enable-memalign-hack \–enable-avisynth \–enable-libgsm \–enable-libmp3lame \–enable-libopencore-amrnb \–enable-libopencore-amrwb \–enable-libtheora \–enable-libvorbis \–enable-libx264 \–enable-libxvid \–extra-cflags=-I/olibs/include \–extra-ldflags=-L/olibs/libmakemake install