由于FFMpeg是基于Linux开发的开源项目,源代码和Windows下最常见的Visual Studio提供的C/C++编译器不兼容,

因此它不能使用MSVC++编译。要想使用FFMpeg,最先要解决的问题就是在Windows下配置一个类似Linux的编译环境,

将FFMpeg编译为二进制库以后,再利用其进行进一步开发。MSVC++并不严格的遵循C标准,所以整个编译过程必须使用MSys+MinGW系统来完成。

如果选择编译动态链接库(dll),这些库将和其他的动态链接库一样在使用上没什么差别,可以使用MSVC++来链接这些库到自己的程序,只有这种情况下MSVC++是被支持的。

一、编译过程

1、准备MSys+MinGW系统

下载整合版 Download mingw-get-setup.exe (86.5 kB)

之前编译c++ 时用过,http://blog.csdn.net/kuaile123/article/details/11024873

不多说了,安装目录里 C:\MinGW\msys\1.0 就是 MSys

2、修改“msys.bat”
 用文本编辑器(如NotePad++)打开C:\MinGW\msys\1.0\msys.bat,由于打算用MSVC++编译程序,所以需要有.lib文件才能链接到FFmpeg的库,这些.lib文件可以使用微软的工具链中lib命令产生。把下面一行加到msys.bat的最前面,把路径替换成机器上vcvars32.bat实际存在的路径,比如我的在“D:\Program Files\Microsoft Visual Studio2010\VC\bin”,于是就添加:
 call "D:\Program Files\Microsoft Visual Studio2010\VC\bin\vcvars32.bat"

3、下载ffmpeg源码

由于ffmpeg的源代码存放在SVN仓库里,所以必须使用命令行程序或是图形界面程序来访问。

首先下载TortoiseSVN,安装完成后,在想要存放ffmpeg下邮件,选择check out,输入地址svn://svn.mplayerhq.hu/ffmpeg/trunk

点击开始,开始下载,如下图所示:我下载的版本40多M,网速不好的时候下载很容易中断。

4、编译

首先运行msys.bat,进入shell界面

转到ffmpeg所在目录: cd D:/ffmpeg

注意:目录名使用正斜杠来分割,而不是Windows所使用的反斜杠(比如说要写成"D:/ffmpeg"而不是"D:\ffmpeg")。

文件名或目录名中如果带有空格,必须用双引号括起(例如这样"/C/Program Files",带有双引号)。

不然会提示没有此目录

盘符(例如"C:\")可以从根目录处访问(像这样"/C/")。

(1) 编译静态库

(1.1)配置:

./configure --enable-static --enable-memalign-hack --prefix=C:/MinGW/msys/1.0 --extra-cflags="-fno-common"

注意执行这句话时出现的问题,yasm是汇编编译器,因为ffmpeg中为了提高效率用到了汇编指令,比如MMX和SSE。

这个过程要花费较长的时间,开始会有较长的时间没有反应。其中的prefix是msys的安装路径

如果出现提示: yasm not found, use --disable-yasm for a crippled build

解决方法(a)在网上下载一个yasm.exe并安装在mingw/bin下面,编译代码时你注意看,会发现asm后缀的文件用的编译器是yasm,c文件用的是gcc;

下载地址 http://yasm.tortall.net/Download.html 注意把下载下来的改名为 yasm.exe ,不然还是提示找不到。由于mingw为32位版本,最好下32位,以后后面有问题。

(b)不使用汇编指令,在配置时加上,即./configure  --disable-yasm

(1.2)编译:make

(1.3)安装: make install

安装只是把要开发使用的库文件拷贝到c:/msys/1.0/lib/目录中,头文件拷贝到c:/msys/1.0/include/目录中。产生的库文件为.a文件

(2)编译动态库

如果希望使用FFmpeg包含的libavcodec库开发多媒体文件处理程序,还需要编译libavcodec的dll动态链接库。

(2.1)配置:

./configure --enable-shared --disable-static --enable-memalign-hack --prefix=C:/MinGW/msys/1.0 --extra-cflags="-fno-common"

(2.2)编译:

make

注意:当运行到make这一步时出现问题:

c:\mingw\include\io.h: error : unknown typename 'off64_t'

make: ***[libavformat/applehttp.o]  error1

发现在io.h中已经

/* MSVC's io.h contains the stuff from dir.h, so I will too.
* NOTE: This also defines off_t, the file offset type, through
*       an inclusion of sys/types.h */
#include <sys/types.h>    /* To get time_t.  */

在sys/types.h 文件中有如下一段:

#ifndef _OFF64_T_
#define _OFF64_T_
typedef __int64 _off64_t;
#ifndef __STRICT_ANSI__
typedef __int64 off64_t;
#endif /* __STRICT_ANSI__ */
#endif /* ndef _OFF64_T */

已经定义了off64_t,特别奇怪,不知道为啥没法识别。

不管我是加了 #undef  _OFF64_T_ 还是 将周围的变量注释掉 只保留 typedef __int64 _off64_t; typedef __int64 off64_t;

都会出现更多的错,我以为是64位系统的原因,但是我又在32位电脑上进行编译,同样的问题,不知道这是什么原因。在网上查也没有人有这种问题,太奇怪了。

参考博客: http://blog.csdn.net/dragon101788/article/details/8679092

win7 X64 编译ffmpeg相关推荐

  1. Windows 7(Win7)下MinGW+msys编译ffmpeg,并加入H264编码支持

    可以去ffmpeg官网下载已经编译好的版本:https://ffmpeg.zeranoe.com/builds/ 该编译好的版本支持H264编码和解码 如果需要自己编译,步骤如下: 1.下载安装MSY ...

  2. VS2015编译ffmpeg 3.4.2

    https://blog.csdn.net/bobsweetie/article/details/50858358 https://blog.csdn.net/csdnwei/article/deta ...

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

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

  4. qt学习之旅--MinGW编译FFmpeg(32bit)

    0.前言 本来想说FFmpeg使用现成的动态库,结果发现FFmpeg已经没有32位的了,然而我的QT使用的还是MinGW32位的,没办法,只能自己编译生成32位动态库. 参考博客:ffmpeg 2.6 ...

  5. MinGW32编译ffmpeg+libsrt

    MinGW编译带srt库的ffmpeg 前言 MinGW安装 CMAKE安装 Visual Studio 2017安装 支持windows的线程库 SRT库的编译 openssl的安装 SRT编译 M ...

  6. FFmpeg - Windows下使用MSYS2和VS编译FFmpeg

    文章目录 0. 说明 1. 安装MSYS2 1.1 下载 1.2 安装 2. 下载FFmpeg及其他源码 3. 编译配置依赖库 3.1 打开一个新的MSYS2终端 3.2 编译x264 3.3 编译 ...

  7. WINDOWS 下编译 ffmpeg 源码总结

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

  8. Win7 x64下内核池溢出覆盖配额进程指针(Quota Process Pointer Overwrite)

    0x0 简介 在 Win7 x64位下,内核池的头部结构如下: nt!_POOL_HEADER+0x000 PreviousSize : Pos 0, 8 Bits // 前一个内核堆块大小除以0x1 ...

  9. win7下编译python源码

    win7下编译python源码 下载源码: 打开网页:https://www.python.org/downloads/release/python-2710/ 下载完成后解压即可 查看文档: 其实最 ...

最新文章

  1. ICCV 2021 Best Paper | Swin Transformer何以屠榜各大CV任务!
  2. 盘点那些你可能错过的CNCF优秀开源项目
  3. apache目录 vscode_[PHP] php, apache, VS Code安装与配置
  4. 微信小程序支付,带java源码
  5. ubuntu16.04安装CecureCRT 并破解
  6. leetcode 279 四平方定理
  7. 解读边缘计算在7大领域的研究趋势和最新进展
  8. linux下的C语言开发(ATT 汇编语言)
  9. ACCESS中通过邮件收集数据
  10. python爬取统计局数据_利用Python抓取行政区划码的方法
  11. 真实面试经历:十面阿里,七面头条,六个Offer
  12. lync前段服务器证书安装,Lync Server 2013企业版部署测试六:前端服务器安装Lync Server系统...
  13. linux编译lame,lame mp3 源码 分析
  14. java设计模式之【工厂模式】
  15. 上汽通用凯迪拉克汽车的多媒体系统不能识别u盘的解决方法
  16. C/C++智能指针详解
  17. 聊天机器人之语音识别科大讯飞 Node.js SDK
  18. 解决印象笔记无法搜索到对应标题或内容笔记的问题
  19. SSL数字证书下载流程是怎么样的
  20. java编一个漏斗_java – 漏斗分析计算,你如何计算漏斗?

热门文章

  1. A folder failed to be moved——Android SDK的安装问题解决方案
  2. docker for windows could not read CA certificate【转】
  3. 7 Java Performance Metrics to Watch After a Major Release--转
  4. haproxy 学习记录
  5. iOS开发系列-线程同步dispatch_barrier_async
  6. Lesson 16.3 卷积操作
  7. jQuery快速学习
  8. 如何构建 FinTech 科学反欺诈体系|架构师实践日
  9. 不要将时间浪费到编写完美代码上
  10. Docker Review - Docker 概念 入门篇