Windows下编译FFmpeg-2.6.1详解
在诸多网友帮助下终于搞定了FFmpeg V2.6.1,由于编译环境和程序版本的不同,造成了很多不必要的时间浪费,特在此将编译过程和遇到的问题解决方法写出来,以便方便大家。
编译环境:PC Windows7 64bit、编译工具:MinGW+MSYS+yasm 编译软件:ffmpeg-snapshot-git.tar.bz2
一、下载FFmpeg
FFMPEG官网:http://ffmpeg.org/download.html
FFmpeg SVN:svn://svn.mplayerhq.hu/ffmpeg/trunk
FFmpeg GIT: git://source.ffmpeg.org/ffmpeg.git ffmpeg
由于FFmpeg的SVN代码停止了更新,所以从 svn://svn.mplayerhq.hu/ffmpeg/trunk 上Down下来的代码编译后与在官网上下载的头文件不匹配!所以只能从git上下载或下载git压缩包!
我的下载步骤:打开http://ffmpeg.org/download.html
下载完ffmpeg-snapshot-git.tar.bz2后解压到D:\work\code\FFmpeg 路径任意(最好为英文,方便MinGW操作)
二、下载MinGW+msys
MinGW - Minimalist GNU for Windows-是Windows下模拟linux运行的库、头文件等的集合。
msys-Minimal SYStem-是Windows下模拟linux运行的最新系统,可以通过类似于linux bash的命令行窗口进行代码编译。
登陆 http://sourceforge.net/projects/mingw/files/
下载完成之后点击安装 关键是选择一个路径C:\MinGW作为安装路径,直接下一步就可以
最后点击continue进行安装完毕确认 并进入下载环节
点击左边的列表框,选中 Basic Setup,在右侧会出现一些必要的下载项,全选即可。
选择完毕后点击菜单Installation->Apply Changes 开始下载
三、配置MinGW
MinGW下载完成后进入安装目录,如果是C:\MinGW 则目录为C:\MinGW\msys\1.0
用记事本打开msys.bat文件,在第一行加入:
call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat"
call对应的目录为你的VC安装程序所在目录
四、下载yasm
ffmpeg编译的时候需要yasm.exe 打开http://yasm.tortall.net/Download.html 下载与你版本相匹配的yasm 我用的是win764位 所以下载的是 Win64 .exe (for general use on 64-bit Windows) 如果你的32位系统请下载32位的程序
五、配置yasm
将下载好的yasm-1.3.0-win64.exe 或者 yasm-1.3.0-win32.exe 修改为 yasm.exe并拷贝到c:\windows\system32文件夹下--这样不需要做过多的环境变量配置
六、编译FFmpeg
1、运行软件
运行C:\MinGW\msys\1.0\msys.bat 在弹出窗口中进入ffmpeg的代码解压路径
cd D:\work\code\FFmpeg
2、配置FFmpeg makefile
输入 ./configure --enable-shared --disable-static --enable-memalign-hack
3、编译FFmpeg
make
ffmpeg生成的文件在各自的目录下,可以通过windows自带的查找文件功能 搜索*.dll和*.lib 导出这些生成库
七、编译时问题
如果编译的是老版本的FFmpeg 则会出现以下这些问题
1、gcc is unable to create an executable file.
这是由于gcc编译器没有准备好,应该是安装过程中出了错误,重装一下。
2、error: static declaration of 'lrint' follows non-static declaration
../libavutil/libm.h:62: error: static declaration of 'lrint' follows non-static declaration
../libavutil/libm.h:69: error: static declaration of 'lrintf' follows non-static declaration
../libavutil/libm.h:76: error: static declaration of 'round' follows non-static declaration
../libavutil/libm.h:83: error: static declaration of 'roundf' follows non-static declaration
将ffmpeg代码路径下的config.h中的lrint、lrintf、round、roundf等定义为1
3、implicit declaration of function 'strcasecmp'
这个问题是由于MinGW的环境中没有strcasecmp函数造成,可以通过自己编写代码加入到工程中,也可以自己编写代码保存成文件放到MinGW的include目录下。
将下列代码存储成strcasecmp.h于mingw include目录下。
将这个文件include进avstring.h和metadata.h中,问题解决。
#ifndef __STRCASECMP_H____
#define __STRCASECMP_H____
static inline char __hack_charget( char c )
{
if(c >= 'a' && c <= 'z')
c += 'A' - 'a';
return c;
}
static inline int hack_strcasecmp( char const *a, char const *b )
{
char ac, bc;
int r;
for(;;) {
ac = __hack_charget(*a++);
bc = __hack_charget(*b++);
r = (int)ac - (int)bc;
if(r)
return r;
if(!ac)
return 0;
}
}
static inline int hack_strncasecmp( char const *a, char const *b, int n )
{
char ac, bc;
int r, i;
for(i = 0; i < n; ++i) {
ac = __hack_charget(*a++);
bc = __hack_charget(*b++);
r = (int)ac - (int)bc;
if(r)
return r;
if(!ac)
return 0;
}
return 0;
}
#define strcasecmp hack_strcasecmp
#define strncasecmp hack_strncasecmp
#endif
4、-Werror=implicit-提示
这个表示将隐式声明函数错误,可以通过修改FFmpeg目录下通过./configure生成的config.mak文件,将Werror相关的地方删除即可。如:
-Werror=format-security -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=return-type -Werror=vla 则删除-Werror=implicit-function-declaration
引用:http://blog.sina.com.cn/s/blog_4ae178ba01010353.html
http://blog.chinaunix.net/uid-20718335-id-2980793.html
http://www.xuebuyuan.com/1428648.html
Windows下编译FFmpeg-2.6.1详解相关推荐
- 在Windows下编译FFmpeg详细说明
在Windows下编译FFmpeg详细说明 MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 Mi ...
- 【FFMPEG系列】之windows下编译FFMPEG篇----之三(MingW64)
目录结构 序 1 .安装mingw64 1.1 mingw64的安装 1.2 msys的安装 2.编译ffmpeg 2.1 编译 序 前文"windows下编译FFMPEG篇----之一(M ...
- WINDOWS 下编译 ffmpeg 源码总结
WINDOWS 下编译 ffmpeg 源码,有两种方式:VC.GCC 1.VC 编译: https://github.com/ShiftMediaProject/FFVS-Project-Gene ...
- 在Windows下编译ffmpeg完全手册
本文的内容几乎全部来自于FFmpeg on Windows,但是由于国内的网络封锁,很难访问这个域名下的内容,因此我一方面按照我自己的理解和实践做了翻译,另一方面也是为了能提供一个方便的参考方法. 注 ...
- 【FFMPEG系列】windows下编译FFMPEG篇----之一(MingW)
目录描述 序 1.环境准备 1.1 c99toc89安装 1.2 c99头文件inttypes.h和stdint.h安装 1.3 修改link文件 1.4 修改configure 2.编译 2.1 编 ...
- 在windows下编译ffmpeg
编译ffmpeg,我在网上找了很多相关的方法,但最后都没编译成功. 所以下面就记录下自己的编译方法吧,留着以后编译的时候做参考. 1.首先,下载编译工具MinGW+Msys,搭建编译环境.工具下载地址 ...
- 【FFMPEG系列】之windows下编译FFMPEG篇----之二(MSYS2)
序 有一些ffmpeg编译教程使用mingw与msys工具编译ffmpeg,老版本的Mingw可能不包括msys(此属猜测,欢迎留言告诉),所以安装时既要下载Mingw,又要下载msys.较新版本的M ...
- 【FFMPEG系列】windows下编译ffmpeg且加入libx264
目录结构 1. 源码包下载 1.1. Ffmpeg 1.2. x264 2. 编译工具 2.1. mingw 2.2. yasm 2.3. nasm 2.4. pkg-config 3. mingw/ ...
- C++Windows下CONTAINING_RECORD宏的用法和详解
[cpp] view plaincopy print? #include <Windows.h> #include <stdio.h> int main() { struct ...
- Windows 下安装Dlib face_recognition人脸识别模块详解
Windows 下安装Dlib人脸识别模块 新版本python官网运行安装,此次安装版本3.8.5,安装注意勾选添加环境变量,通过pip安装方便 安装dlib前需要安装C++环境,实际测试安装visu ...
最新文章
- 解决Apache CXF 不支持传递java.sql.Timestamp和java.util.HashMap类型问题
- 五十五、手把手教你从零到一,完成淘宝数据分析案例
- 18-chown命令
- Delphi 字符串转十六进制
- 通过公式处理SAP Analytics Cloud里的dimension,使其符合Date格式需求
- dotnet 从零开始写一个人工智能 网络模型
- Node的textContent属性
- 容器云平台在传统企业落地的一些思考和探索
- Spring Cloud学习(一)
- Matlab中冒号“:“的使用方法
- 洛谷P1136 迎接仪式
- Picture exceed the maximum allowable rotation range
- 计算机财务管理中的函数,浅析几种常用的Excel函数在财务管理中的应用
- python点击屏幕坐标获取_python+appium 点击屏幕坐标操作(qq头像为例)
- estore简版商城问题总结
- 安川ga700变频器故障码集_安川变频器故障代码
- 一个小白程序员的目标
- 阿兹卡塔防 Azgard Defense 详细攻略
- STM32驱动BH1750模块
- UNIX和Linux Shell正则表达式语法介绍
热门文章
- hiho一下 第二十九周 最小生成树三·堆优化的Prim算法【14年寒假弄了好长时间没搞懂的prim优化:prim算法+堆优化 】...
- CentOS设置默认启动命令行(不启动图形界面)
- WCF实例上下文以及会话学习
- 如何往一个指定的地址写入一个值呢
- 美国在线教育的启示:教育领域正在革命
- .net垃圾回收学习[NET 2.0 Performance Guidelines - Garbage Collection][翻译加学习]
- 使用Visual Studio 2010 Team System中的架构师工具(设计与建模)
- sql 判断连续数字
- 洛谷——P1744 采购特价商品
- Linux/Unix shell 监控Oracle实例(monitor instance)