【FFMPEG】Windows下使用Visual Studio 2010编译ffmpeg全过程

时间:2023-02-05 09:44:14

ffmpeg是一个开源的多媒体库,使用非常广泛。

在linux下编译ffmpeg非常简单,而在windows下编译就不是那么容易了。一般在windows下使用MinGW的gcc toolchain进行编译,这样的话,因为ffmpeg的导出函数均是C风格,因而gcc编译的lib可以被vs链接。但是gcc的debug符号与vs的debug符号(*.pdb)是无法兼容的,因此我们用vs来开发基于ffmpeg的程序时无法深入ffmpeg内部进行debug,这不管对于学习还是工程使用都不是那么友好。因而,使用同一套编译系统好处多多。

本篇博文向你展示从头到尾怎么在windows下用vs2010编译ffmpeg,以及一个基于ffmpeg的栗子。

注:请不要用这篇博文的方法去尝试在VS2010以下版本编译ffmpeg,我试过在vs2005中编译,各种问题!官方也没有在vs2010以下版本中进行过编译测试。

一,下载ffmpeg及第三方程序:

1,ffmpeg官网: http://ffmpeg.org/

2,ffmpeg git 地址 : git://source.ffmpeg.org/ffmpeg.git ( 注意 :clone代码之前先在git命令行中设置!!!:git
config --global core.autocrlf false )

3,MinGW : http://www.mingw.org/ ,运行下载的MinGW安装管理器,包含msys。假设安装好后MinGW路径为:d:/MinGW
,则msys路径应为:d:/MinGW/msys 。将:d:/MinGW/bin和d:/MinGW/msys/1.0/bin加到系统path环境变量中;

4,yasm : http://yasm.tortall.net/ ,
改名叫yasm.exe,复制到:d:/MinGW/msys/1.0/bin 目录下;

5,c99-to-c89 : https://github.com/libav/c99-to-c89/downloads ,
将c99conv.exe和c99wrap.exe复制到:d:/MinGW/msys/1.0/bin 目录下;

6,C99头文件inttypes.h和stdint.h : http://code.google.com/p/msinttypes/downloads/list ,将此两个头文件复制到:
D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include 目录下( 自行修改为自己的安装目录 );

二,编译之前的设置:

1,复制:d/MinGW/msys/1.0/msys.bat 到同目录下,改名叫做msys_vs2010.bat,在msys_vs2010.bat开头部分添加:call "D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat" ;

2,打开msys_vs2010.bat,切换到ffmpeg目录下。

到这里为止,所有的编译之前的工作就完成了。

三,配置编译:

1,配置:ffmpeg编译配置选项很丰富,详细请运行“ . /configure --help > ffmpegcfg.txt ”查看其选项。这里我的选项是:

静态库:./configure -- enable-static --enable-memalign-hack --prefix= ./vs2010_build --extra-cflags="-fno-common" --toolchain= msvc 

动态库:./configure -- enable-shared --enable-memalign-hack --prefix= ./vs2010_build --extra-cflags="-fno-common" --toolchain= msvc

2,编译:make & make install

编译时间与机器性能相关,可能会很慢。

至此在vs2010_build就生成了编译好的ffmpe库,有4个目录,bin/include/lib/share 。

四,一个栗子:

OK,ffmpeg编译成功,让我们以一个栗子结束这篇博文。

在 vs2010_build/share/ffmpeg/examples 目录下有若干个示例。

我们随便找一个 avio_reading.c 拖到我们的test_ffmpeg工程(vs2010),记得在这之前要配置include与lib路径(很简单,就不详细说了),链接库中加入: ws2_32.lib;libavcodec.a;libavdevice.a;libavfilter.a;libavformat.a;libavutil.a;libswresample.a;libswscale.a; 编译,链接,运行,OK!

五,注意:

1,在C++源文件中include ffmpeg头文件时需要加上:

#ifdef __cplusplus 

extern "C"{ 

#endif

//… includes

#ifdef __cplusplus 



#endif,

2,ffmpeg使用的是C99,但是坑爹微软直到vs2012好像都还是C89,所以不排除使用中会有些宏会出问题。

【FFMPEG】Windows下使用Visual Studio 2010编译ffmpeg全过程的更多相关文章

  1. Windows下使用Visual Studio 2010编译ffmpeg全过程

    在visual studio 2010中调用ffmpeg http://blog.sina.com.cn/s/blog_4178f4bf01018wqh.html Windows下使用Visual S ...

  2. Windows下使用Visual Studio 2010 编译ffmpeg全过程

    (注意:请务必先阅读:七,后记补充:) ffmpeg是一个开源的多媒体库,使用非常广泛. 在linux下编译ffmpeg非常简单,而在windows下编译就不是那么容易了.一般在windows下使用M ...

  3. 在 Windows下用 Visual Studio 编译 OpenSSL 1.1.0

    到OpenSSL官方网站下载OpenSSL源代码包 1.下载 openssl-1.1.0.tar.gz 2.安装 ActivePerl, 可以到http://www.activestate.com/a ...

  4. DUIEngine使用Visual Studio 2010编译Debug_Dll版有关Error MSB3073错误解决方案

    在使用Visual Studio 2010编译DUIEngine的Debug_Dll版如果遇见如下错误: 错误 64 error MSB3073: 命令“copy D:\SomePath\DUIEng ...

  5. Visual Studio 2010编译时总是提示"调用目标发生了异常"的解决

    现象: 无论建立的是Win32 Console的解决方案,还是MFC的解决方案,重新打开Visual Studio 2010之后,编译时总是提示“调用的目标发生了异常” 解决: 1. 关闭Visual ...

  6. Windows 安装 Microsoft Visual Studio 2010

    Windows 安装 VS2010 我的电脑系统:Windows 10 x64位 我要安装的Microsoft Visual Studio 是:VS2010 注意: VS2010 没有专门的64位版. ...

  7. cryptopp开源库的使用(零):windows下使用visual studio编译

    编译相当简单:打开目录下的sln文件直接编译即可,官方支持到vc2012,我使用vs2013也没有错误,优秀的开源库总是便于使用. 编译的时候注意运行库得选择需要跟使用该库的保持一致,否则会出现重定义 ...

  8. Windows下使用Visual Studio Code搭建Go语言环境

    1.安装GO语言   下载地址:    https://golang.org/dl/   Windows下直接运行安装GO语言即可.     安装成功.   安装完毕GO语言后,需要添加GOPATH环 ...

  9. QT5.7.0在win10下使用visual studio 2015编译(目标平台 xp)

    环境:win10+vs2015+QT5.7.0 目标:编译出能在windows xp上运行的QT 通过baidu和bing找出来的结果没有一个能成功运行,大部分都能编译成功,并完美解决“exe不是有效 ...

随机推荐

  1. Spring mvc中@RequestMapping 6个基本用法

    Spring mvc中@RequestMapping 6个基本用法 spring mvc中的@RequestMapping的用法.  1)最基本的,方法级别上应用,例如: Java代码 @Reques ...

  2. knockoutjs(二)

    Observables(监控属性)Knockout是在下面三个核心功能是建立起来的: 1监控属性(Observables)和依赖跟踪(Dependency tracking) 2声明式绑定(Decla ...

  3. hdu3124Arbiter(最小圆距离-扫描线)

    链接 详解http://blog.sina.com.cn/s/blog_6e7b12310100qnex.html #include <iostream> #include<cstd ...

  4. iOS 进阶 第十七天&lpar;0420&rpar;

    0420 凡是继承了UIResponder的类都可以做响应者 响应事件的传递是由底到高来传递,响应者链条是由高到底来响应 相应事件的传递(由底到高 找到正在和用户触摸交互的view) 准则:事件由父控 ...

  5. &lbrack;2014-03-13 08&colon;46&colon;42 - Dex Loader&rsqb; Unable to execute dex&colon; java&period;nio&period;BufferOverflowException&period; Check the Eclipse log for stack trace&period;

    Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace. 问题提示 ...

  6. BZOJ1669&colon; &lbrack;Usaco2006 Oct&rsqb;Hungry Cows饥饿的奶牛

    1669: [Usaco2006 Oct]Hungry Cows饥饿的奶牛 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 665  Solved: 419 ...

  7. UVa 900 - Brick Wall Patterns

    题目大意:用1*2的砖头建n*2的墙,问有多少种不同的砖头排列方式?与斐波那契序列相似. #include <cstdio> #define MAXN 60 #define N 50 un ...

  8. Sharding与数据库分区&lpar;Partition&rpar; 分表、分库、分片和分区

    Sharding与数据库分区(Partition) http://blog.sina.com.cn/s/blog_72ef7bea0101cjtb.html https://www.2cto.com/ ...

  9. windows10中git-bash闪退的解决办法

    windows10中git-bash闪退的解决办法 出现错误详情 Windows10 64位专业版安装git .18之后出现 Git闪退,报错信息:bash: /dev/null: No such d ...

  10. 测试 Open Live Writer

    我要试试. 看看图片如何: 这是从电脑端上传的一个例子,如果编辑器里可以支持复制粘贴图片就好了. Open Live Writer 发布以后,还可在保存在本地,想起来的时候就修改一下. 再美化一下. ...