用VS2013编译FFMPEG232

http://blog.csdn.net/finewind/article/details/38854517

如果只是拿来使用,网上有现成的SDK。但我是想深入研究FFMPEG代码,又不熟悉Linux开发环境,因此需要编译一个在windos平台下能用VS单步调试的FFMPEG,网上现有资料大部分都是基于很老的版本,不断摸索,终于成功了。

之所以选择VS2013,是因为VS2013支持大部分C99的特性,不需要改动代码,也不需要使用C99转C89的工具。

MinGW和yasm是绕不过去的,因为需要使用MinGW来生成config.h,而ffmpeg的汇编语法和VS的不一样,因此需要yasm。

具体步骤:

1. 下载FFMPEG源码,下载地址:http://ffmpeg.zeranoe.com/builds/

2. 下载MinGW安装器,下载地址:http://www.mingw.org/;下载完成后安装,安装完成后点运行,标记上以下几项:

然后在Installation菜单下点击Apply Changes(mingw32-gcc-g++不用选择);

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://ffmpeg.org/platform.html#Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows

http://www.cnblogs.com/xylc/p/3683203.html

在Windows下编译FFmpeg详细说明

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=/mingw
make
make install
【基本库】
■zlib

http://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)
■bzip2

http://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)
■SDL

http://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-hack
make
make install
【编解码库】

假设第三方库安装路径为/olibs
■libgsm

GSM support via libgsm

GSM 06.10 lossy speech compression

http://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
■libmp3lame

MP3 encoding via libmp3lame

http://sourceforge.net/projects/lame/files/

下载lame-3.98.3.tar.gz

解压,修改lame-3.98-3/libmp3lame/i386/Makefile.in中下面这行

$(ECHO) “non_pic_object=’$*.o’” >>[email protected]

$(ECHO) “non_pic_object=’ .libs/$*.o’” >>[email protected]

编译安装:

./configure –prefix=/olibs –disable-shared –enable-static –disable-frontend
make
make install

ffmpeg编译参数:–enable-libmp3lame
■opencore-amr

AMR-NB de/encoding、AMR-WB decoding via libopencore-amrnb

http://sourceforge.net/projects/opencore-amr/

下载opencore-amr-0.1.1.tar.gz(0.1.2编译需要g++、libstdc++.dll.a)

解压,注释掉以下Makefile中的几行

./opencore-amr/amrnb/Makefile
install: libopencore-amrnb.a $(SHLIB)
install -d $(DESTDIR)$(PREFIX)/lib
install -m 644 libopencore-amrnb.a $(DESTDIR)$(PREFIX)/lib
# install $(SHLIB) $(DESTDIR)$(PREFIX)/lib
ifneq ($(shell uname), Darwin)
# ln -sf $(SHLIB) $(DESTDIR)$(PREFIX)/lib/$(SONAME)
# ln -sf $(SONAME) $(DESTDIR)$(PREFIX)/lib/libopencore-amrnb.so
endif

./opencore-amr/amrwb/Makefile
install: libopencore-amrwb.a $(SHLIB)
install -d $(DESTDIR)$(PREFIX)/lib
install -m 644 libopencore-amrwb.a $(DESTDIR)$(PREFIX)/lib
# install $(SHLIB) $(DESTDIR)$(PREFIX)/lib
ifneq ($(shell uname), Darwin)
# ln -sf $(SHLIB) $(DESTDIR)$(PREFIX)/lib/$(SONAME)
# ln -sf $(SONAME) $(DESTDIR)$(PREFIX)/lib/libopencore-amrwb.so
endif

编译安装:

make CC=gcc
make install PREFIX=/olibs

ffmpeg编译参数:–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-shared
make
make install
■libvorbis

Vorbis encoding via libvorbis

http://www.xiph.org/downloads/

下载libvorbis-1.2.3.tar.gz

解压,编译安装:

./configure –prefix=/olibs –disable-shared –with-ogg=/olibs
make
make install

ffmpeg编译参数:–enable-libvorbis
■libtheora

Theora encoding via libtheora

http://www.xiph.org/downloads/

下载libtheora-1.1.1.zip

解压,编译安装:

./configure –prefix=/olibs –disable-shared –with-ogg=/olibs
make
make install

ffmpeg编译参数:–enable-libtheora
■libx264

H.264 encoding via x264

http://www.videolan.org/developers/x264.html

ftp://ftp.videolan.org/pub/videolan/x264/snapshots/

下载最新的源码包

解压,编译安装:

./configure –prefix=/olibs
make
make install

ffmpeg编译参数:–enable-gpl –enable-libx264
■libxvid

Xvid encoding via xvidcore

http://www.xvid.org/

下载xvidcore-1.2.2.tar.gz

解压,修改:

./build/generic/configure: “libxvidcore. <- “xvidcore.

编译安装:

cd xvidcore/build/generic
./configure –prefix=/olibs –disable-shared
make
make install

删除/olibs/lib/libxvidcore.dll

ffmpeg编译参数:–enable-gpl –enable-libxvid
■libfaac、libfaad

ffmpeg内置已经支持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/lib
make
make install

时间: 2024-12-20 15:36:19

用VS2013编译FFMPEG232的相关文章

VS2013编译protobuf报错:error C4996: &#39;std::_Copy_impl&#39;: Function call with parameters that may be unsafe

今天碰到这个问题,网上找了好久, 解决方法如下 VS2013编译protobuf报错:error C4996: 'std::_Copy_impl': Function call with parameters that may be unsafe 方法一 右键点击工程 -> 属性 -> C/C++ -> 常规 -> SDL检查 改为:否 (/sdl-) 编译 O了! 方法二 右键点击工程 -> 属性 -> C/C++ ->预处理器 添加宏定义 _SCL_SECUR

VS2013 编译&amp;使用 stlport

1. 下载stlport.   下载地址:http://sourceforge.net/projects/stlport/ 2. 解压到一个目录下面, 我的是解压到D:\project_kuku\program\library\STLport-5.2.1 3. 打开vs2013的命令行工具, 在目录:C:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts\ 下面,   <VS2013 x86 本机工具命令提示>

VS2013编译boost1.55库

1. 官网下载最新的Boost库,我的是1.55 2. 在使用vs2013编译boost-1.55.0之前,先要给boost做下修改: boost_1_55_0\boost\intrusive\detail\has_member_function_callable_with.hpp line:222 template<class U> static BOOST_PP_CAT(zeroarg_checker_, BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLAB

解答VS2013编译报错不准确是什么原因

1.当程序在错误时,VS2013编译报出的错误有时不会一起全部报出,而是按错误的英文首字母逐个报出的 2.如果报错的信息双击点过去查看时又发现无明显错误问题时,这个这个时候可以是VS编译的缓存问题,这时清除一下硬盘上的缓存文件,再试试编译就可以准确定位到错误的位置了 VS编译时在硬盘上的路径为:C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files 彻底删除这个文件夹下的所有文件,如果没权限设置一下:将只读勾选掉

vs2013编译的程序在其他机器上运行的环境设置

vs2013编译的程序在其他没有安装vs2013的机器上运行会有问题,网上有很多解决方法,如果你还没有解决,可以尝试以下方法,这是我在反复崩溃,烦躁测试后得到的解决方法. 1. 安装vs2013 运行包 vcredist_x64.exe 如果这个时候还是不能正常执行,请不要和我一样崩溃, 试试我的解决方法,对这个运行包进行修复 控制面板--程序--程序和功能 在程序列表里找到 vc++ 12.0.30501 选中,修复 这样就可以打开vs2013编译出来的程序了,我碰到的情况是这样解决的. ==

用vs2013编译lua源码方法(一)

用vs2013编译lua源码方法 来源:网络    编辑:admin 1.下载lua源码:lua-5.2.3.tar.gz,解压 2.用vs2013建立一个win32工程: 1)下载后解压到一个目录下,这里假设解压到  F:\lua-5.2.3  注意下载的版本,如果是5.2.x,后面代码中的C API发生了改变 2)在VS2010中新建一个静态库项目,项目命名为lua   a. 选择新建 Win32 console project b. 在wizard界面选择 static Library:不

windows7下cygwin+vs2013编译webkit源码

先下载源码和其他依赖,然后准备cygwin的环境,安装vs2013,最后编译即可.网上没有能直接用于最新版本源码编译的教程,所以我在编译过程中也遇到了很多坑.回过头来看,这些坑都是可以避免的,想要自己尝试编译的同学,可以根据本文快速的实现自己编译webkit(~除去下载文件的时间,15分钟准备环境,1小时编译完成). 下载最近源码 最近的下载版本和源码在这里: http://nightly.webkit.org/ 我使用的源码是这个版本built on 13 October 2014 and i

VS2013编译VTK7.1.1

1.下载VTK 从VTK官网可以下载Source,Data,以及Documentation:VTK Download VTK安装分为binary install和source code install两种方式,binary install可以下载vtk.exe直接安装VTK,开发直接在Tcl中进行:source code install需要下载CMake进行configure/generate,开发可以使用C++,Java,Python,Tcl等任意方式,因此本文下载Source进行编译. 解压

VS2013编译经常卡在正在从以下位置加载xxx.dll的符号

换了系统后,重新下载了一个vs2013 with update2安装,编译的时候总是卡在 正在从以下位置加载xxx.dll的符号 如图: 解决方法: 进入VS---工具---选项----调试----符号 看右边有个“Microsoft符号服务器”,将前面的勾去掉, (可能还有删除下面的那个缓存). 然后就不会在调试时加载了! 问题得到解决