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