【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不是有效 ...
随机推荐
- 老式浏览器支持html5与css3
html5低版本浏览器兼容方式 <!--[if IE]> <script src=”http://apps.bdimg.com/libs/html5shiv/3.7/html5s ...
- BZOJ 2502 清理雪道/ Luogu P4843 清理雪道 (有源汇上下界最小流)
题意 有一个有向无环图,求最少的路径条数覆盖所有的边 分析 有源汇上下界最小流板题,直接放代码了,不会的看dalao博客:liu_runda 有点长,讲的很好,静心看一定能看懂 CODE #inclu ...
- Codeforces Round #539 (Div. 1) E - Sasha and a Very Easy Test 线段树
如果mod是质数就好做了,但是做除法的时候对于合数mod可能没有逆元.所以就只有存一下mod的每个质因数(最多9个)的幂,和剩下一坨与mod互质的一部分.然后就能做了.有点恶心. CODE #incl ...
- Codeforces Round #585 (Div. 2) D. Ticket Game
链接: https://codeforces.com/contest/1215/problem/D 题意: Monocarp and Bicarp live in Berland, where eve ...
- 037_自动添加防火墙规则,开启某些服务或端口(适用于 RHEL7)
#!/bin/bash#设置变量定义需要添加到防火墙规则的服务和端口号#使用 firewall-cmd --get-services 可以查看 firewall 支持哪些服务 service=&quo ...
- GO111MODULE的设置(及GOPROXY)
环境:win7 go1.13.1 早听说GO111MODULE大名,今天才测试成功,步骤如下: 因为我的Go version >= 1.13,直接用go env -w 设置(注意大小写) go ...
- CF786C Till I Collapse 整体二分+根号分治
题意:对于一个序列,假如说一个区间内最多能包含 $k$ 个不同的数,那么这个序列最少会被划分成几个区间 $?$ 输出 $k$ 为 $1\sim n$ 的答案. 我们每次选区间一定是贪心地将这个区间选地 ...
- 2018 Nowcoder Multi-University Training Contest 5
Practice Link A. gpa 题意: 有\(n\)门课程,每门课程的学分为\(s_i\),绩点为\(c_i\),要求最多删除\(k\)门课程,使得gpa最高. gpa计算方式如下: \[ ...
- 【概率论】3-2:连续分布(Continuous Distributions)
title: [概率论]3-2:连续分布(Continuous Distributions) categories: Mathematic Probability keywords: Continuo ...
- npm传参技巧
博主今天遇到一个问题,使用vue-cli-serve,想要用shelljs来执行vue-cli-serve,动态给它传“--port xxxx"但是发现”--port“怎么传都穿不进去,后面 ...