MinGw 下编译 FFMPEG

    前段时间帮同学做一个项目,需要在windows下用到ffmpeg。ffmpeg是Linux下的很流行的一个开源解码器,在windows下编译,很自然的想到了使用mingw+msys来模拟Linux环境,于是开始进行配置,没想到遇到的问题还挺多的,在这里和大家一起探讨一下。

    1.首先是mingw+msys环境的配置,现在mingw做的很好了,不用两个分开安装了,直接从sourceforge上下一个git的安装。

   http://sourceforge.net/projects/mingw/files/ 下载 mingw-get-inst-20110313.exe 。

    2. 安装需要勾选MSYS选项

安装MinGW

  3.如果需要用MSVC++编译程序,需要有.lib文件才能链接到FFmpeg的库,这些.lib文件可以使用微软的工具链中lib命令产生。在安装完成后修改msys.bat (<%mingw_path%>/msys/1.0/msys.bat),在文件的最前面添加

  1. “call "D:/Program Files/Microsoft Visual Studio 10.0/VC/bin/vcvars32.bat"”  
 

(根据vs版本和路径的不同,配置对应的路径)

  4.播放MP4需要X264解码库支持,需要到videolan (http://www.videolan.org/developers/x264.html)下载源码进行编译。编译命令:

  

  1. ./configure --prefix=/mingw   
  2. make  
  3. make install  
 

5.在编译ffmpeg 是出现“expected ')' before 'pid'”错误,而libx264运行需要pthreads 支持,所以需要pthread的lib支持,到fmpeg.arrozcru.org下载一个pthread动态库。(http://ffmpeg.arrozcru.org/autobuilds/extra/mingw32/pthreads-w32-CVS_10012009_0211-mingw32.tar.bz2) 。解压文件,将mingw文件夹下的目录分别放到mingw安装文件夹下对应得目录。

6.进入ffmpeg 目录,编译,configure 能够顺利完成,但是make 时报错,“implicit declaration of function 'strcasecmp'”,需要对mingw进行patch。下载strcasecmp.diff (http://fate.arrozcru.org/mingw32/patches/),然后patch:

  1. patch –p2 strcasecmp.diff   
 

7.生成ffmpeg 需要yasm(开源汇编器)支持,去http://www.tortall.net 下载对应的yasm(http://www.tortall.net/projects/yasm/releases/yasm-1.1.0-win32.exe ),重命名为yasm.exe 将其放到<%mingw_path%>/bin文件夹下。

8.这样配置完后可以生成ffmpeg.exe , ffprobe.exe,但是没有ffplay.exe,没有播放器。要生成ffplay.exe需要SDL的支持,在ffmpeg configure 时如果提示sdl support yes ,那么生成结果就有ffplay.exe。

9.SDL(Simple DirectMedia Layer)需要glib的支持, GLib是GTK+和GNOME工程的基础底层核心程序库,是一个综合用途的实用的轻量级的C程序库。我们到GTK+官网下载glib (http://www.gtk.org/download-windows.html) ,同时下载它的依赖项zlib(也在相同页面下载)。这样,我们再到sdl官网下载最新版本的SDL-devel-1.2.14-mingw32.tar.gz(http://www.libsdl.org/release/SDL-devel-1.2.14-mingw32.tar.gz),解压后按照目录将文件分别放进对应的mingw文件夹中。

10.终于,可以开始编译ffmpeg了,先下载ffmpeg,首先得先安装git(http://www.kernel.org/pub/software/scm/git/),Git 是用于 Linux 内核开发的版本控制工具,它采用了分布式版本库的方式,不必服务器端软件支持。找到ffmpeg官网,进入download页面,选择git://github.com/lu-zero/ffmpeg.git 源下载。当然,首先得新建一个文件夹来存放下载的源代码:

  1. git clone git://github.com/lu-zero/ffmpeg.git  
 

git 获取ffmpeg

注意:截图可能有点问题,ffmpeg.org的源可能有点老了,不支持新版的SDL,这问题让我搞了半天,还有videolan.org的源不是稳定版本,会出现“implicit declaration of function 'strdup'”错误。

11.Configure

  1. ./configure --enable-memalign-hack --enable-pthreads –-enable-libxvid --enable-libx264 --enable-gpl –-disable-debug –-prefix=/mingw  
 

ffmpeg configure

 

memalign-hack:是mingw平台配置下必须的

pthreads:libx264要用到的,如果不配置libx264,可以使用w32threads

libxvid, libx264:播放高清mp4需要的解码库

gpl:配置libxvid, libx264 同时需要配置支持GPL

disable-debug:减少编译产生的调试信息

 

12.configure结果

ffmpeg 配置结果(1) ffmpeg 配置结果(2)

13.make

这是一个漫长的过程。。。

  1. make  
 

14.make 结果

生成了ffmpeg.exe ffplay.exe ffprobe.exe

make 结果

15.测试ffplay,我随便找一个MP4文件来播放,这里选了一个1280p的辛普森一家的片段播放,效果还是很理想的。

测试ffplay



转自 http://blog.csdn.net/professorsheep/article/details/6254467

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值