之前考虑到需要快速配置编译ffplay,使用了比较暴力的方法,具体可以参考编译ffplay.exe简化版

这里介绍下相对规范的做法。

前提:已经安装了Windows下GCC开发环境——MINGW+msys。

Step1:下载FFmpeg

链接如下:FFmpeg Download

Step2:下载yasm并配置

可以从下面URL下载:yasm 1.3 release

选择你需要的版本,我的系统是win32的,所以下载“Win32.exe”。

下载完成之后将yasm-1.3.0-win32.exe重命名为yasm.exe,并复制到%MINGW_PATH%/bin目录下。MINGW_PATH是MINGW安装目录。

Step3:下载pkg-config并配置

pkg-config官网上通常找不到windows下可用的版本,建议参考下面介绍配置:pkg-config for mingw 安装及配置

注意配置好环境变量,PKG_CONFIG_PATH(这是pkg-config默认的库依赖项查找目录)。

也可以把pkg-config.exe放到%MINGW_PATH%/bin下。

pkg-config是一个辅助的配置、链接工具,可以方便的支持gcc自动配置。

Step4:下载SDL并配置

可以从SDL v1.2.15下载,选择SDL-devel-1.2.15-mingw32.tar.gz。

后续的配置是把上面压缩包中的include/sdl、lib、bin目录下的文件拷贝到%MINGW_PAH%/include/sdl、%MINGW_PAH%/lib、%MINGW_PAH%/bin。

剩下的可能需要手工添加。在%MINGW_PAH%/lib添加pkgconfig目录。由于SDL v1.2.15不包含sdl.pc文件,需要参考SDL v2.0的版本生成一个或者自己编译一个。内容如下:

# sdl pkg-config source file

prefix=/c/mingw/
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include Name: sdl
Description: Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer.
Version: 1.2.15
Requires:
Conflicts:
Libs: -L${libdir} -lmingw32 -lSDLmain -lSDL -mwindows
Libs.private: -lmingw32 -lSDLmain -lSDL2 -mwindows -Wl,--no-undefined -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid -XCClinker -static-libgcc
Cflags: -I${includedir}/SDL -Dmain=SDL_main

Step5:FFmpeg的configure

既然工具都配置好了,剩下的就是开始按照Linux上的软件编译流程,使用下面命令配置FFmpeg

./configure  --disable-static --enable-shared --enable-gpl --enable-version3 --enable-pthreads

完成之后检查下SDL是否正常检测到,可以查看FFmpeg编译目录下的config.h文件,找到HAVE_SDL、CONFIG_SDL宏,如果都是1,表示SDL配置成功,可以放心编译出ffplay了。

Step6: FFmpeg编译

这基本上算最后一步编译,耗时相对长一些,通常半个小时以上。

一条编译指令,make

小结

Windows下GCC开发环境配置起来相对复杂,有问题通常都是可以解决的。写这篇文章主要考虑自己用了几年的FFmpeg,编译了很多次,也没成功编译出ffplay.exe,这次终于整理清楚FFmpeg编译的过程以及可能存在的问题,值得记录。

Windows下使用MINGW编译ffplay的更多相关文章

  1. 手把手教你在Windows下使用MinGW编译libav(参考libx264的编入)

    转自:http://www.th7.cn/Program/cp/201407/242762.shtml 手把手教你在Windows下使用MinGW编译libav libav是在Linux下使用纯c语言 ...

  2. Windows下用Mingw编译Boost.Regex库

    下载Boost库,解压. 定位到regex库文件夹下. GCC所对应的MAKEFILE为gcc.mak 进入命令提示符下,输入make -f gcc.mak 这是如果直接按回车执行的话,会出现错误: ...

  3. windows下使用mingw编译出ffplay(简化版)

    之前编译FFmpeg直接使用dll.lib,默认的mingw也不会编译出ffplay.exe. 近期由于工作需要,需要验证下修改之后的FFmpeg版本是否正常,需要使用ffplay.exe. 比较暴力 ...

  4. 在Windows下利用MinGW编译FFmpeg

    目录 [隐藏]  1 环境与软件 2 第一步:安装MinGW 3 第二步:配置编译环境 4 第三步:配置SDL 5 第四步:编译 5.1 编译faac 5.2 编译fdk-aac 5.3 编译x264 ...

  5. 再次尝试windows下msys+MinGW编译ffmpeg

    电脑上安装太多的开源库,环境变量里面一些常用的头文件都有几种,以前使用的编译ffmpeg的方法现在常常提示错误.从config.log中看,这些错误往往都是一些头文件引用错误导致.由于项目中继续编译自 ...

  6. windows下使用mingw编译python扩展模块

    环境: 1.python2.7.2 2.mingw20120426 说明: PYTHON_HOME:不做特殊说明的话,默认代表python的安装路径. MINGW_HOME:不做特殊说明的话,默认代表 ...

  7. windows下用mingw编译linux项目

    1.下载安装mingw32 2.将mingw下bin和msys\1.0下bin设置为系统path 3.启动msys.bat 4.cd到项目目录 5.输入./configure 6.输入make 7.输 ...

  8. 在Windows下使用MinGW静态编译Assimp

    使用MinGW静态编译Assimp 到了5月份了,没有写一篇日志,于是自己从知识库里面拿出一篇文章充数吧.这次将要解说怎样在Windows下使用MinGW静态编译Assimp. Assimp是眼下比較 ...

  9. windows下使用mingw和msvc静态编译Qt5.15.xx

    windows下使用mingw和msvc静态编译Qt5.15.xx 下载并安装相关依赖软件 Python version 2.7 https://www.python.org/downloads/ ( ...

随机推荐

  1. perf之record

    如果CPU的使用率突然暴涨,如何迅速定位是哪个进程.哪段代码引起的呢?我们需要一个profiling工具,对CPU上执行的代码进行采样.统计,告诉我们CPU到底在忙些什么. perf 就是这样的工具. ...

  2. Debug 路漫漫-06

    FSBPR 迭代一轮就停止???…… 循环条件没有问题.. 达到收敛条件了?——参数变化小于1e-4…? deltaU =0 —— U没有更新?——incU < 0 —— 取消动量(前半部分即可 ...

  3. php加密总结

    1.md5加密,加密之后是32位的字符串 2.sha1加密, 加密之后是40位的字符串 3.crypt加密, 加密之后是13位的字符串 上面是不可逆的 可逆的如下urlencode --> ur ...

  4. Swift 类型转换

    1.类型转换 1.1 隐式类型转换 如 C 语言的类型转换 1.2 显式类型转换 Swift 语言是一种强类型语言,其整型的强制类型转换就是调用了参数类型对应的整形扩展构造方法,然后通过对应扩展构造方 ...

  5. Mac Apache ZooKeeper 配置

    1.配置准备工作 1)配置 ZooKeeper 准备工作 下载相关软件 apache-zookeeper-v3.4.10.zip ZooKeeper 官网 ZooKeeper 配置软件下载地址,密码: ...

  6. Linux/Unix 新手和专家教程

    你正在找一些高质量的Linux 和 UNIX 的教程吗?如果是,这篇文章会告诉你到哪去找到这些教程.这里我们将给出超过30个相当的不错的 Linux 和 UNIX 在线的教程. 需要大家注意的是,他们 ...

  7. 你永远学不会的设计-->百度地图map api key 的设置

    哈哈 说到咱的互联网大佬 baidu, 真是无人不知,无人不晓,可是多少人能领会他的设计哲学呢? 来看看吧.... 事情要从上周的一个小实验说起,目标是调用baidu map api 做个产品原型. ...

  8. Android通讯录管理(获取联系人、通话记录、短信消息)

    前言:前阵子主要是记录了如何对联系人的一些操作,比如搜索,全选.反选和删除等在实际开发中可能需要实现的功能,本篇博客是小巫从一个别人开源的一个项目抽取出来的部分内容,把它给简化出来,可以让需要的朋友清 ...

  9. Android_Bitmap_图片的二次采样并生成缩略图

    1.Bitmap概述 Android系统支持几种图片(.png (preferred), .jpg (acceptable), .gif (discouraged)), 其中Bitmap位图#ffff ...

  10. [转]java:IO流学习小结

    Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...