经过一晚上加一上午的奋斗,终于成功编译出了最新版的FFMPEG,下面是我编译的心得,因为是最新的,应该会对大家有用,编译的FFMPEG的版本是0。11。2,2012-09-19新发布的版本

平台:WINDOWS XP,MinGW+MSYS

一、下载FFMPEG

大家可以到FFMPEG官网上去下载最新版:http://ffmpeg.org/download.html现在的最新版就是我编译的版本;

其实我更喜欢下面这个地址,直接列出来所有的供下载的版本:http://ffmpeg.org/releases/

二、下载MinGW

1、下载

地址是:http://sourceforge.net/projects/mingwbundle/files/,在这个页面上点击Download下载那个zip文件。下载完成后,直接安装,我使用的是默认路径。(这个文件比较大,是MinGW+MSYS的合并安装包,下载并安装后,把C:\msys\1.0\bin文件夹复制出来,备份保存);

默认路径为:C:\minGW和C:\msys\1.0

2、配置环境变量
右击“我的电脑”-》属性-》高级-》环境变量
按如图操作,在PATH的编辑框最后加上C:\MinGW\bin

注意用“;”与前面的隔开

三、下载MSYS

地址:http://download.csdn.net/detail/harvic880925/4602268

下载后,还是默认安装,安装前不用卸载前面第一步中安装的版本,也就是把第一步的版本给覆盖掉;

在安装结束的时候会提出DOS提示窗口:

最后一句为:
Do you wish to continue with the post install? [yn ]
输入n,结束安装。

四、将在第一步中提取出来的bin文件夹内容,复制到C:\msys\1.0\bin文件夹下覆盖现在的文件;

五、http://yasm.tortall.net/Download.html上下载yasm的exe文件(需要根据自己的操作系统选择是Win32.exe还Win64.exe),下载完后重命名为yasm.exe,放到MinGW安装目录的bin目录下。

如果没有这一步操作,在后面编译ffmpeg的过程中,可能会提示找不到yasm命令。ffmpeg里面的汇编加速部分的代码需要用到它,如果禁用汇编加速,会影响编译出来的编解码库的运行效率

六、编译

1、依下面步骤打开“msys.exe”

开始-》所有程序-》MinGW-》MSys-》msys

2、打开“VS 2008命令提示”

开始-》所有程序-》Microsoft Viusal studio 2008-》Viusal studio Tools-》Visual Studio 2008命令提示

输入:c:\msys\1.0\msys.bat,如下图

不用管前面是什么,直接输入,然后回车,之后就跳转到下面这个界面:

输入:lib  回车

然后就得到下面的界面:

在编译FFMPEG之前,有一个事我想提一下,如果想要支持X264编码的话,要先安装X264,对于如何安装X264,在下文中有,这里就假设已经安装了X264

之后编译FFMPEG的操作了,比如我下载的FFMPEG名为:ffmpeg-0.11.2,解压到D盘下;

在上面的命令提示行下,输入下面代码:(括号内为说明内容)

  1. cd d:
  2. cd ffmpeg-0.11.2         (即转到ffmpeg-0.11.2文件夹下)
  3. ./configure --enable-memalign-hack --enable-memalign-hack

等执行完成后,回到命令行,输入

  1. make distclean              (清理中间文件)
  2. $./configure --enable-memalign-hack --enable-ffserver --enable-network --enable-protocols --enable-muxers --disable-yasm --enable-shared --enable-w32threads --enable-libx264 --enable-gpl --extra-cflags=-I/c:/x264/include --extra-ldflags=-L/c:x264/lib
  3. make
  4. make install

对于以上命令,可以用./configure –-help打开帮助,里面有解释

完成后,所有的头文件、库文件都保存在C:\msys\1.0\local文件夹里;
--extra-cflags=-I/c:/x264/include --extra-ldflags=-L/c:x264/lib 这两句命令是将X264的头文件和库文件包含在运行程序中,不过我在运行此程序之前将.lib文件考到了lib文件夹下了,不知道如果不考的话会不会有影响。

这里参考文章是:http://blog.sina.com.cn/s/blog_54b5ea250100r53o.html

下面是我编译完成的local文件夹里的全部内容,供大家分享,有兴趣的可以去下载;

地址:

特别鸣谢:http://ffmpeg.arrozcru.org/wiki/index.php?title=Shared_LIB

MinGW+MSYS编译X264

一、下载最新的X264

1、地址:http://www.videolan.org/developers/x264.html,点击左边那个大大的按钮“DownLoad X264”,下载时不要用搜狗自动的下载,因为我用搜狗下的总是坏的包,最好在按钮上右击用迅雷下载,大小有500多K;

2、因为是.tar.bz2结尾的压缩包,常用的WINRAR不能解压,下载7-zip,来解压,解压到msys的home文件夹下

位置如图:

二、编译X264

1、重复上面的第六步中的“1-3”小步

2、切到X264工作目录,然后中编译,总体输入以下代码:

cd c:

cd msys

cd 1.0

cd home

cd x264

./configure--enable-win32thread --enable-shared --disable-asm

make

make install

到此,在msys的local文件夹下会生成所需的头文件和DLL,但没有.lib文件,下面我们就用dll来提取lib文件;

三、提取lib

1、下载工具:poxports,地址:http://download.csdn.net/detail/harvic880925/4603881

将其中的pexports.exe放到VS2008的VC\bin目录下,我的是D:\Program Files\Microsoft VisualStudio 9.0\VC\bin,

2、将msys的local文件夹下生成的DLL文件同样复制到D:\ProgramFiles\Microsoft Visual Studio 9.0\VC\bin目录下,比如我生成的DLL名为:libx264-128.dll

3、依次点击开始-》所有程序-》MicrosoftVisual Studio 2008-》Visual Studio Tools-》Visual Studio 2008命令提示

就此打开了VS2008命令提示界面

输入: (括号内为说明内容)

cd bin       (切换到bin目录下)

pexports libx264-128.dll > libx264-128.def

lib /machine:ix86 /def:libx264-128.def

(以上内容为避免错误可以直接复制、粘贴到命令行)

到这应该就会在D:\ProgramFiles\Microsoft Visual Studio 9.0\VC\bin下生成libx264-128.lib文件了,如果没有可以重新执行下第3步,我第一次出现了个warning就没有成功,第二次才成功的。

我将我生成的文件上传我资源中,不收分,想要的可以去下载:

FFMPEG(2012-9-19):http://download.csdn.net/detail/harvic880925/4604774

X264 地址:http://download.csdn.net/detail/harvic880925/4603907

windows 下FFMPEG的编译方法 附2012-9-19发布的FFMPEG编译好的SDK下载的更多相关文章

  1. 在Linux下和Windows下遍历目录的方法及如何达成一致性操作

    最近因为测试目的需要遍历一个目录下面的所有文件进行操作,主要是读每个文件的内容,只要知道文件名就OK了.在Java中直接用File类就可以搞定,因为Java中使用了组合模式,使得客户端对单个文件和文件 ...

  2. Linux和Windows下查看环境变量方法对比

    摘自:Linux和Windows下查看环境变量方法对比 一.查看所有环境变量的名称和值 Linux下:export Windows下:set 二.根据名称查该环境变量的值 Linux下:echo $环 ...

  3. windows 下共享内存使用方法示例

    windows下共享内存使用方法较 linux 而言微微复杂 示例实现的功能 有一个视频文件,一块内存区域 : 程序 A,将该视频写入该内存区域 : 程序 B,从该内存区域读取该视频 : 代码模块实现 ...

  4. windows下在idea用maven导入spark2.3.1源码并编译并运行示例

    一.前提 1.配置好maven:intellij idea maven配置及maven项目创建 2.下载好spark源码: 二.导入源码: 1.将下载的源码包spark-2.3.1.tgz解压(E:\ ...

  5. Winio驱动在64位windows下无法使用的解决方法

    C#在使用WinIo的驱动开发类似按键精灵一类工具的时候,需要对相关的驱动进行注册才能正常启动,找了下资料,资料来自: http://jingyan.baidu.com/article/642c9d3 ...

  6. Windows下SVN服务器搭建方法整理(apache)

    http://skydream.iteye.com/blog/437959 http://www.cnblogs.com/liuke209/archive/2009/09/23/1572858.htm ...

  7. Linux和Windows下查看环境变量方法(转)

    add by zhj: 本文中的Linux是指Ubuntu14.04 以前我对环境变量有误解,以为环境变量就是PATH这个变量.其实环境变量其实有很多,PATH仅仅是其中一个而已,比如在Windows ...

  8. python在windows下UnicodeDecodeError的解决方法

    之前在windows下使用python调用某些模块时都会报错,像这样: C:\Documents and Settings\Administrator>python -m CGIHTTPServ ...

  9. windows下git的使用方法(码云)

    这表文章主要是用了可视化操作: 使用命令行操作:https://www.cnblogs.com/mswyf/p/9370238.html 一.安装Git Bash 为了在windows下使用Git,我 ...

随机推荐

  1. iframe嵌入其他网站,如何自适应高度

    终于有一周时间,工作不那么忙了,腾出手来总结下工作过程中学到的知识. 每天遇到新问题,解决新问题,但是却很少有时间去仔细研究下,或者总结下.攒的多了,就得从头捋一遍. 说下iframe自适应高度: 搜 ...

  2. 解决java写入xml报错org.w3c.dom.DOMException:DOM002 Illeg

    Exception is -- > org.w3c.dom.DOMException: DOM002 Illegal character 字符不被允许 org.w3c.dom.DOMExcept ...

  3. Sql注入中连接字符串常用函数

    在select数据时,我们往往需要将数据进行连接后进行回显.很多的时候想将多个数据或者多行数据进行输出的时候,需要使用字符串连接函数.在sqli中,常见的字符串连接函数有concat(),group_ ...

  4. 在AngularJS中学习javascript的new function意义及this作用域的生成过程

    慢慢入门吧,不着急. 至少知道了controller和service的分工. new function时,隐含有用this指向function的prototype之意. 这样,两个JAVASCRIPT ...

  5. aircrack-ng 字典破解WPA / WPA2

    1. 安装 首先安装两个扩展sudo apt-get install build-essentialsudo apt-get install libssl-dev 然后到http://download ...

  6. keystonejs

    开始之前先确保你已经安装了Node.js 0.10+ 和MongoDB v2.4+. 要使用KeystoneJS,你需要掌握合理的Javascript知识,并熟悉数据库概念之类的基础知识,会用 nod ...

  7. lintcode:previous permutation上一个排列

    题目 上一个排列 给定一个整数数组来表示排列,找出其上一个排列. 样例 给出排列[1,3,2,3],其上一个排列是[1,2,3,3] 给出排列[1,2,3,4],其上一个排列是[4,3,2,1] 注意 ...

  8. lintcode:Palindrome Partitioning 分割回文串

    题目: 分割回文串 给定一个字符串s,将s分割成一些子串,使每个子串都是回文串. 返回s所有可能的回文串分割方案. 样例 给出 s = "aab",返回 [ ["aa&q ...

  9. java io异步

    1.一般来说,可以通过多线程的方式来实现异步 2.同步和异步着重点在于多个任务的执行过程中,一个任务的执行是否会导致整个流程的暂时等待: 3.而阻塞和非阻塞着重点在于发出一个请求操作时,如果进行操作的 ...

  10. PCB电路板上防潮绝缘抗腐蚀的三防漆

    三防漆(Conformal Coating)是一种涂在电路板上以形成保护膜的方法,这层保护膜通常仅是薄薄的一层(约30-210µm),它可以用来加强电子产品的防潮.防污.防尘.防化学污染的能力,也可以 ...