在诸多网友帮助下终于搞定了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中,问题解决。

  1. #ifndef __STRCASECMP_H____

  2. #define __STRCASECMP_H____

  3. static inline char __hack_charget( char c )

  4. {

  5. if(c >= 'a' && c <= 'z')

  6. c += 'A' - 'a';

  7. return c;

  8. }

  9. static inline int hack_strcasecmp( char const *a, char const *b )

  10. {

  11. char ac, bc;

  12. int r;

  13. for(;;) {

  14. ac = __hack_charget(*a++);

  15. bc = __hack_charget(*b++);

  16. r = (int)ac - (int)bc;

  17. if(r)

  18. return r;

  19. if(!ac)

  20. return 0;

  21. }

  22. }

  23. static inline int hack_strncasecmp( char const *a, char const *b, int n )

  24. {

  25. char ac, bc;

  26. int r, i;

  27. for(i = 0; i < n; ++i) {

  28. ac = __hack_charget(*a++);

  29. bc = __hack_charget(*b++);

  30. r = (int)ac - (int)bc;

  31. if(r)

  32. return r;

  33. if(!ac)

  34. return 0;

  35. }

  36. return 0;

  37. }

  38. #define strcasecmp hack_strcasecmp

  39. #define strncasecmp hack_strncasecmp

  40. #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详解相关推荐

  1. 在Windows下编译FFmpeg详细说明

    在Windows下编译FFmpeg详细说明 MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 Mi ...

  2. 【FFMPEG系列】之windows下编译FFMPEG篇----之三(MingW64)

    目录结构 序 1 .安装mingw64 1.1 mingw64的安装 1.2 msys的安装 2.编译ffmpeg 2.1 编译 序 前文"windows下编译FFMPEG篇----之一(M ...

  3. WINDOWS 下编译 ffmpeg 源码总结

    WINDOWS 下编译 ffmpeg 源码,有两种方式:VC.GCC 1.VC 编译:   https://github.com/ShiftMediaProject/FFVS-Project-Gene ...

  4. 在Windows下编译ffmpeg完全手册

    本文的内容几乎全部来自于FFmpeg on Windows,但是由于国内的网络封锁,很难访问这个域名下的内容,因此我一方面按照我自己的理解和实践做了翻译,另一方面也是为了能提供一个方便的参考方法. 注 ...

  5. 【FFMPEG系列】windows下编译FFMPEG篇----之一(MingW)

    目录描述 序 1.环境准备 1.1 c99toc89安装 1.2 c99头文件inttypes.h和stdint.h安装 1.3 修改link文件 1.4 修改configure 2.编译 2.1 编 ...

  6. 在windows下编译ffmpeg

    编译ffmpeg,我在网上找了很多相关的方法,但最后都没编译成功. 所以下面就记录下自己的编译方法吧,留着以后编译的时候做参考. 1.首先,下载编译工具MinGW+Msys,搭建编译环境.工具下载地址 ...

  7. 【FFMPEG系列】之windows下编译FFMPEG篇----之二(MSYS2)

    序 有一些ffmpeg编译教程使用mingw与msys工具编译ffmpeg,老版本的Mingw可能不包括msys(此属猜测,欢迎留言告诉),所以安装时既要下载Mingw,又要下载msys.较新版本的M ...

  8. 【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/ ...

  9. C++Windows下CONTAINING_RECORD宏的用法和详解

    [cpp] view plaincopy print? #include <Windows.h> #include <stdio.h> int main() { struct  ...

  10. Windows 下安装Dlib face_recognition人脸识别模块详解

    Windows 下安装Dlib人脸识别模块 新版本python官网运行安装,此次安装版本3.8.5,安装注意勾选添加环境变量,通过pip安装方便 安装dlib前需要安装C++环境,实际测试安装visu ...

最新文章

  1. 解决Apache CXF 不支持传递java.sql.Timestamp和java.util.HashMap类型问题
  2. 五十五、手把手教你从零到一,完成淘宝数据分析案例
  3. 18-chown命令
  4. Delphi 字符串转十六进制
  5. 通过公式处理SAP Analytics Cloud里的dimension,使其符合Date格式需求
  6. dotnet 从零开始写一个人工智能 网络模型
  7. Node的textContent属性
  8. 容器云平台在传统企业落地的一些思考和探索
  9. Spring Cloud学习(一)
  10. Matlab中冒号“:“的使用方法
  11. 洛谷P1136 迎接仪式
  12. Picture exceed the maximum allowable rotation range
  13. 计算机财务管理中的函数,浅析几种常用的Excel函数在财务管理中的应用
  14. python点击屏幕坐标获取_python+appium 点击屏幕坐标操作(qq头像为例)
  15. estore简版商城问题总结
  16. 安川ga700变频器故障码集_安川变频器故障代码
  17. 一个小白程序员的目标
  18. 阿兹卡塔防 Azgard Defense 详细攻略
  19. STM32驱动BH1750模块
  20. UNIX和Linux Shell正则表达式语法介绍

热门文章

  1. hiho一下 第二十九周 最小生成树三·堆优化的Prim算法【14年寒假弄了好长时间没搞懂的prim优化:prim算法+堆优化 】...
  2. CentOS设置默认启动命令行(不启动图形界面)
  3. WCF实例上下文以及会话学习
  4. 如何往一个指定的地址写入一个值呢
  5. 美国在线教育的启示:教育领域正在革命
  6. .net垃圾回收学习[NET 2.0 Performance Guidelines - Garbage Collection][翻译加学习]
  7. 使用Visual Studio 2010 Team System中的架构师工具(设计与建模)
  8. sql 判断连续数字
  9. 洛谷——P1744 采购特价商品
  10. Linux/Unix shell 监控Oracle实例(monitor instance)