Windows下vs2013编译ffmpeg源码

  • Post author:
  • Post category:其他



在搜罗网上各种资源以及网上请教各位大声终于在今天晚上编译成功,经测试编译出来的库可正常使用,故可证明编译正确。在此特感谢群里大神的帮助。感谢雷神

现将具体步骤记录如下;

本人编译用的是vs2013,在win7系统下,对ffmpeg-3.0进行编译,其他版本尚未测试,后续若有问题会补充。

1、下载ffmpeg源码,可自行到ffmpeg官网上下载个版本的源码;

2、下载安装器MinGW,然后安装,安装过程会有选择,我直接用的默认的;

3、下载yasm,改名为yasm.exe拷贝至C:\MinGW\msys\1.0\bin目录下;

4、配置C:\MinGW\msys\1.0\bin\msys.bat,用编辑模式打开,在文件最前面也就是

@echo off之后,加上下面一句(各位路径按自己的来)


call “C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat”


5、重命名C:\MinGW\msys\1.0\bin\link.exe,防止与VC发生冲突,编译完后可改回来;


6、开始配置,双击C:\MinGW\msys\1.0\msys.bat,调到ffmpeg源码所在位置,我使用的配置选项为:


./configure –enable-shared –disable-static –prefix=./vs2013_build


–enable-debug –toolchain=msvc,耐心等待配置完成;


7,、接下来就是make all 和make install,完工。


此时可以查看在源码目录下生成了一vs_2013bulid的目录,里面包含include、lib等文件夹。



下面继续介绍如何利用编译出来的库来运行example中的小程序。


1、vs2013新建一个win32应用程序;将example中的一个程序代码粘进去;


2、配置vs2013属性,在 vc++目录->包含目录 行内填入编译出来的include所在路径,在vc++目录->库目录 行内填入编译出来的.lib所在文件路径,这里注意,将.dll链接库放到工程Debug目录下。我编译出来的.lib库文件和.dll文件都在vs2013_bulid\bin目录下,而不再lib目录下,lib目录下都是.def文件和pkgconfig文件夹,有大神可以解释一下为什么吗?pkgconfig和.def在这儿有用吗?


3、在include文件夹里加上_mingw.h、inttypes.h和stdint.h三个文件,到此属性配置完毕;


4、将所有#include都放到extern “C”中,原因是ffmpeg为C语言编写,在其下面写


#pragma comment(lib,”avcodec.lib”)

#pragma comment(lib,”avformat.lib”)

#pragma comment(lib,”avutil.lib”)


大家根据需要写入需要的.lib库。


代码中在最上方加入#define __STDC_CONSTANT_MACROS,为防止出现


fatal error C1189: #error :  missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS


此时编译工程,会出现各种语法错误,都可通过查找解决,如snprintf()改为_snprintf(),还有在inttypes.h中,有的变量中间多了个空格导致编译错误。总之都是些小的错误了。修改完之后就可以编译成功了。



写的匆忙,有不详细和错误的地方,请各位大神朋友指出,感谢。



版权声明:本文为isluckyguo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。