【FFMPEG】Windows下使用Visual Studio 2010编译ffmpeg全过程
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全过程的更多相关文章
- Windows下使用Visual Studio 2010编译ffmpeg全过程
在visual studio 2010中调用ffmpeg http://blog.sina.com.cn/s/blog_4178f4bf01018wqh.html Windows下使用Visual S ...
- Windows下使用Visual Studio 2010 编译ffmpeg全过程
(注意:请务必先阅读:七,后记补充:) ffmpeg是一个开源的多媒体库,使用非常广泛. 在linux下编译ffmpeg非常简单,而在windows下编译就不是那么容易了.一般在windows下使用M ...
- 在 Windows下用 Visual Studio 编译 OpenSSL 1.1.0
到OpenSSL官方网站下载OpenSSL源代码包 1.下载 openssl-1.1.0.tar.gz 2.安装 ActivePerl, 可以到http://www.activestate.com/a ...
- DUIEngine使用Visual Studio 2010编译Debug_Dll版有关Error MSB3073错误解决方案
在使用Visual Studio 2010编译DUIEngine的Debug_Dll版如果遇见如下错误: 错误 64 error MSB3073: 命令“copy D:\SomePath\DUIEng ...
- Visual Studio 2010编译时总是提示"调用目标发生了异常"的解决
现象: 无论建立的是Win32 Console的解决方案,还是MFC的解决方案,重新打开Visual Studio 2010之后,编译时总是提示“调用的目标发生了异常” 解决: 1. 关闭Visual ...
- Windows 安装 Microsoft Visual Studio 2010
Windows 安装 VS2010 我的电脑系统:Windows 10 x64位 我要安装的Microsoft Visual Studio 是:VS2010 注意: VS2010 没有专门的64位版. ...
- cryptopp开源库的使用(零):windows下使用visual studio编译
编译相当简单:打开目录下的sln文件直接编译即可,官方支持到vc2012,我使用vs2013也没有错误,优秀的开源库总是便于使用. 编译的时候注意运行库得选择需要跟使用该库的保持一致,否则会出现重定义 ...
- Windows下使用Visual Studio Code搭建Go语言环境
1.安装GO语言 下载地址: https://golang.org/dl/ Windows下直接运行安装GO语言即可. 安装成功. 安装完毕GO语言后,需要添加GOPATH环 ...
- QT5.7.0在win10下使用visual studio 2015编译(目标平台 xp)
环境:win10+vs2015+QT5.7.0 目标:编译出能在windows xp上运行的QT 通过baidu和bing找出来的结果没有一个能成功运行,大部分都能编译成功,并完美解决“exe不是有效 ...
随机推荐
- idea 设置 maven 默认位置
在 idea 中创建 maven 项目 每次都要修改掉 默认的maven位置,觉得很烦.... 所以这边篇博客就是专门解决掉这个麻烦精的......(233333) 首先 File --> ...
- hudson 使用节点打包出现ClassNotFoundException: org.jvnet.hudson.maven3.agent.Maven3Main 错误
java.lang.NoClassDefFoundError: org/jvnet/hudson/maven3/agent/Maven3Main Caused by: java.lang.ClassN ...
- 删除harbor项目下的所有镜像
user= pswd= url= proid= REPOS=$(curl -s -X GET --header 'Accept: application/json' "${url}/api/ ...
- java+上传文件夹
最近在学习百度的开源上传组件WebUploader,写了一些示例以记录.WebUploader的缺点是没有一个比较好的现成的界面,这个界面需要自己去实现.自由度高了一些. WebUploader是由B ...
- 使用C++定义一个万能类型
分享一个类似于Qt中QVariant类. 目录: 1 类型定义 2 数值操作 3 万能类型包装 4 使用 ——————————————————Begain—————————————————— 类型定义 ...
- 威尔逊定理x
威尔逊定理 在初等数论中,威尔逊定理给出了判定一个自然数是否为素数的充分必要条件.即:当且仅当p为素数时:( p -1 )! ≡ -1 ( mod p ),但是由于阶乘是呈爆炸增长的,其结论对于实际操 ...
- 【AGC030F】Permutation and Minimum(DP)
题目链接 题解 首先可以想到分组后,去掉两边都填了数的组. 然后就会剩下\((-1,-1)\)和\((-1,x)\)或\((x,-1)\)这两种情况 因为是最小值序列的情况数,我们可以考虑从大到小填数 ...
- C# http请求工具类
/// <summary> /// Http请求操作类之HttpWebRequest /// </summary> public class HttpHelper { #reg ...
- Robot Framework(十七) 扩展RobotFramework框架——扩展Robot Framework Jar
4.4扩展Robot Framework Jar 使用标准JDK安装中包含的jar命令,可以非常简单地向Robot Framework jar添加其他测试库或支持代码.Python代码必须放在jar里 ...
- Servlet页面跳转的两种方式
一.页面跳转 1. 请求转发: (1) 使用requestDispatcher对象: 转发格式:request.getRequestDispatcher("path").forwa ...