编译FFmpeg开源项目(编译环境、用VS2013编译和调试).docx
文本预览下载声明
FFmpeg开源项目编译说明搭建编译环境、用VS2013编译和调试一、准备工作1、本机环境:win7 sp1,74位,vs20132、ffmpeg官网上有源代码和现成的静态库和动态库可以调用。如果需要定制ffmpeg的模块,或者跟踪调试和分析研究,则需要进行编译和调试。这里采用的Ffmpeg版本为当前最新版本:2.6.2。3、ffmpeg本身是linux下的开源项目。它在linux、windows系统中都可以编译。在windows系统,尽量选择VS2013编译工具,是因为VS2013支持大部分C99的特性,基本不需要改动代码,也不需要使用C99转C89的工具。4、ffmpeg是一个开源的多媒体库,使用非常广泛。在linux下编译ffmpeg非常简单,而在windows下编译就不是那么容易了。一般在windows下使用MinGW的gcc toolchain进行编译,这样的话,因为ffmpeg的导出函数均是C风格,因而gcc编译的lib可以被vs链接。但是gcc的debug符号与vs的debug符号(*.pdb)是无法兼容的,因此我们用vs来开发基于ffmpeg的程序时无法深入ffmpeg内部进行debug二、搭建编译环境MinGW和yasm是绕不过去的,因为需要使用MinGW来生成config.h,而ffmpeg的汇编语法和VS的不一样,因此需要yasm。具体步骤如下:1、下载FFMPEG源码,下载地址:/builds/;(这里也可以下载:静态库static、动态库shared、开发库dev)2、下载MinGW安装器,下载地址:/;下载完成后安装,安装完成后点运行,标记上以下几项:然后在Installation菜单下点击Apply Changes(mingw32-gcc-g++也可不选择,因为我们用vs2013编译!);注意:运行下载的MinGW安装管理器,安装好MinGW,里面已经包含msys。假设安装好后MinGW路径为:C:/MinGW ,则msys路径应为:C:/MinGW/msys 。要将C:\MinGW\bin和C:\MinGW\msys\1.0\bin加到系统path环境变量中(注意:win7的path里面的目录分割符是采用反斜杠的“\”)。3、下载yasm.exe,下载地址:?/?;下载后的文件如下图所示:(根据计算机的32位和64位选择,本机为用win64位的yasm-1.2.0-win64.exe)下载后改名为yasm.exe,再复制到C:/MinGW/msys/1.0/bin目录下;4、复制C:/MinGW/msys/1.0/msys.bat 到同目录下,改名叫做msys_vs2013.bat(这样做是为了保留原来的文件!)。用编辑器打开C:/MinGW/msys/1.0/msys_vs2013.bat,在此文件的最前面(@echo off之后)添加一行如下内容:call C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat?(要与vs2013的实际安装路径一致);5、重命名 C:/MinGW/msys/1.0/bin/link.exe 为link_renamed.exe (依实际安装选择路径),这一步是防止这个link.exe与vc的link.exe发生冲突,编译完成后可修改回来。三、编译ffmpeg1、双击C:/MinGW/msys/1.0/msys_vs2013.bat,运行shell(linux的shell):转到FFMPEG源代码根目录下,可运行 ./configure --help查看编译配置选项(用./configure –helplisq.txt,在lisq.txt中查看方便一些),可以使用的命令及选项为:静态库:./configure?--enable-static?--prefix=./vs2013_build?--enable-debug --toolchain=msvc?动态库:./configure?--enable-shared?--prefix=./vs2013_build?--enable-debug --toolchain=msvc等待配置完成返回(大约两分钟);其他常用选项:--enable-avresample2、输入 make编译;(提示:make clean是清理项目文件)(大约七八分钟)3、输入make install安装。(大约一分钟)如果静态库的configure配置,完成后,生成编译好的ffmpe库,有4个目录,bin、include、lib、share?。生成的头文件(*.h)及库(*.a,这是带有调试信息的静态库,可以改为*.lib)已经在ffmpeg源代码下的vs
显示全部