您的位置:首页 > 其它

FFmpeg在windows下的编译,搭建mingw+msys环境,含mingw+msys下载 [转载,有改动]

2013-05-06 21:45 555 查看
前段时间编译了ffmpeg,由于需要生成在windows下的可执行文件,所以采用的是mingw+msys的环境。这个环境可以在windows下模拟一个linux终端,对linux下的makefile项目进行编译,从而生成windows下的可执行文件和动静态链接库。

对环境的搭建费了好大功夫,百度出来的文章基本上都是几年前的,大家转来转去,就那一个版本,还很简略,现在已经跟不上时代的步伐。好在终于找到一篇比较新的文章,内容非常详细,根据它的步骤一步一步来就可以正常编译ffmpeg,现在将这篇文章转载让大家看看。

我把根据此文章搭建好的环境压缩成包,放在了CSDN上,下载了之后解压即可使用,免去了大家下载各个部分然后一步步搭建的麻烦,不过我没有做对各种库的添加支持,就是说我的环境已经做完了前面的11步,需要添加支持的直接从后面开始就可以了!

注:我把mingw放在了msys/1.0/目录下。

mingw+msys环境下载地址:

http://download.csdn.net/source/2634858

以下内容转自《MinGW下简单编译FFmpeg》,转载时有改动。

原文地址:/article/4430504.html

由于原文中的资源下载链接现在大部分都已失效,本人自己费尽心机搜集下载,并上传到了CSDN上,可以直接下载。

编译环境要求:

Msys: 1.0.10

MinGW:5.1.4

make: 3.81

gcc: 4.3.2

w32api: 3.13

SDL: 1.2.1

MinGW-Runtime: 3.15

一步步的来吧:

1. Minimal SYStem (MSYS) 安装

下载MSYS-1.0.10.exe并安装:

下载地址:http://download.csdn.net/source/2635337

安装到c:/msys/1.0,临近最后会出现个dos窗口,最后一句为:

Do you wish to continue with the post install? [yn ]

输入n,结束安装。

2. MSYS DTK (Developer Tool Kit) 安装

下载msysDTK-1.0.1.exe并安装:

下载地址:http://download.csdn.net/source/2635339

安装到C:/msys/1.0,其他默认。

3. 升级下MSYS

下载msysCORE-1.0.11-bin.tar.gz:

下载地址:http://download.csdn.net/source/2694777

解压这个文件,将bin/mount.exe, msys-1.0.dll, ps.exe三个文件copy到c:/msys/1.0/bin下面覆盖下。

4. 升级下MSYS的BASH

下载bash-3.1-MSYS-1.0.11-snapshot.tar.bz2:

下载地址:http://download.csdn.net/source/2635711

解压这个文件,将bin/bash.exe, sh.exe两个文件copy到c:/msys/1.0/bin。

5. MinGW 安装(我安装的是mingw-get-inst-20120426.exe那个版本,用原文说的版本,后面一直再报runtime version >=
3.15)

下载mingw-5.1.4.exe并安装:

下载地址:http://download.csdn.net/source/2635735

安装,选择download and install,下两步之后选择Candidate,不要选Current。选择MinGW base tools (autoselected), g++ compiler, MinGW make; 安装路径为c:/msys/1.0/mingw。等待下载完了安装吧。O(∩_∩)O……

5.2. 还原binutils-2.16.91

很多朋友需要用ffmpeg的dll来做开发。编译的时候是用./configure --enable-memalign-hack --disable-static --enable-shared。但是最终编译出来make install或者将相关的dll拷贝得到ffmepg同级目录后,执行ffmpeg或者ffplay报错:应用程序正常初始化失败。

经过google了许多资料,发现是binutils的版本问题。chinavideo论坛上面有的朋友说是mingw的版本问题,使用MinGW-3.1.0-1.exe会解决。Jeremiah经过试验,发现不大行,从报错的结果来看,MinGW-3.1.0-1.exe没有自带binutils。还是要自己安装。而MinGW-5.1.4.exe的candidate选项会默认给我们安装binutils-2.18.50-20080109-2.tar.gz。而这个binutils会最终导致应用程序正常初始化失败的错误。

Jeremiah和网友deepocean测试了n个binutils的版本,最后发现binutils-2.16.91-20050827-1.tar.gz是最适合的。其他的,ms不行!

下载地址:http://download.csdn.net/source/2635739

解压到c:/msys/1.0/mingw,覆盖原来的。

6. 配置fstab

copy C:/msys/etc/fstab.sample 成 fstab,确保以下对应:

#Win32_Path Mount_Point

c:/msys/1.0/mingw /mingw

原始环境就搭建好了。可以启动桌面上行的MSYS了。

7. 升级make

下载make-3.81.90-msys.rar:

下载地址:http://download.csdn.net/source/2635746

解压,复制make.exe到c:/msys/1.0/bin下,覆盖原来的make。

MSYS中输入make -v显示的版本为3.81。

8. 升级gcc

下载gcc-4.3.2-tdm-1-core.zip:

下载地址:http://download.csdn.net/source/2635749

解压到c:/msys/1.0/mingw,覆盖原来的。

MSYS中输入gcc -v显示的版本为4.3.2。

9. 升级W32API

下载w32api-3.13-mingw32-dev.tar.gz:

下载地址:http://download.csdn.net/source/2635754

解压到c:/msys/1.0/mingw,覆盖原来的。

10. 添加SDL

下载SDL-devel-1.2.11-mingw32.tar.gz:

下载地址:http://download.csdn.net/source/2635755

解压该软件包;

将lib下的所有文件复制到C:/msys/1.0/mingw/lib;

将include下的所有文件复制到C:/msys/1.0/mingw/include;

将bin下的i386-mingw32msvc-sdl-config复制到C:/msys/1.0/mingw/bin,并重命名为sdl-config;

将bin下的SDL.dll复制到C:/msys/1.0/mingw/bin。

10.2 添加pr.exe

下载coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2:
下载地址:http://download.csdn.net/source/2635758
解压,拷贝bin的pr.exe到c:/msys/1.0/bin下。

整体上的编译环境就搭建好了。

11. 编译FFmpeg

ffmpeg下载地址:

ffmpeg-0.5.tar.bz2: http://download.csdn.net/source/2635790

ffmpeg-0.5.1.tar.gz: http://download.csdn.net/source/2635791

ffmpeg-0.5.2.tar.gz: http://download.csdn.net/source/2635795

ffmpeg-0.5.3.tar.bz2:http://download.csdn.net/source/3361257

ffmpeg-0.5.4.tar.bz2:http://download.csdn.net/source/3361264

ffmpeg-0.6.tar.gz: http://download.csdn.net/source/2635797

ffmpeg-0.6.1.tar.bz2:http://download.csdn.net/source/3361267

ffmpeg-0.6.2.tar.bz2:http://download.csdn.net/source/3361272

ffmpeg-0.6.3.tar.bz2:http://download.csdn.net/source/3361281

copy到c:/msys/1.0/home/your_name下面(此路径可根据自己喜好)。

解压:tar xjvf ffmpeg-(根据版本).tar.bz2。

vi一个文件ffmpeg-conf.sh,内容为:

SDL_CFLAGS=/mingw/include

SDL_LIBS=/mingw/lib

./configure --enable-ffplay --enable-memalign-hack

执行./ffmpeg-conf.sh。

执行make,应该不会有错误的。

执行ffplay filename就可以播放了。

12. 写在编译完之后

我们只是对ffmpeg进行了简单的编译,如果需要其他的功能还是去google吧。

编译完了应该会出三个可执行文件:ffmpeg.exe, ffplay.exe, ffserver.exe, 但是我编译完了只有前两个,没有ffserver.exe。因为MinGW里面少了关于ffserver用的网络的相关的包。

参考http://bbs.chinavideo.org/viewthread.php?tid=95

单独使用ffplay,需要将c:/msys/1.0/mingw/bin/SDL.dll和ffplay.exe放到相同的目录下。

Ffmpeg工程组的网站不错http://www.ffmpeg.com.cn,它的论坛]http://bbs.chinavideo.org/index.php里面应该有不少关于FFmpeg的东西。

13. Msys的编辑

以前很不喜欢这个系统,因为不能跟cmd或者其他linux的命令行一样复制粘贴,去网上查了一下,发现可以的其实,只不过方式不一样。

复制:选中一段文字,就将这段文字复制到剪贴板。

粘贴:shift+鼠标左键,就将剪贴板的内容粘贴到命令行了。

14. libamr库加入

首先下载wget-1.9.1-mingwPORT.tar.bz2。

地址:http://download.csdn.net/source/3361359

解压wget.exe到/mingw/bin下。

下载unzip-5.51-1-bin.zip。

地址:http://download.csdn.net/source/3361732

解压bin/unzip.exe到/mingw/bin下。

下载两个库:

amrnb:http://download.csdn.net/source/3361372

amrwb:http://download.csdn.net/source/3361377

分别解压到~下面。(~:/home/yourname)。

26104-700.zip下载:http://download.csdn.net/source/3361380

将这个zip包放到~/amrnb-7.0.0.2下面。

26204-700.zip下载:http://download.csdn.net/source/3361384

将这个zip包放到~/amrwb-7.0.0.3下面。

~/amrnb-7.0.0.2和~/amrwb-7.0.0.3下面分别执行:

./configure --disable-shared

make

make install

其中,--disable-shared将产生静态库,如需要动态库,则不要加这个选项。

进入ffmpeg-0.5目录,

保存以下脚本为ffmpeg-conf02.sh

SDL_CFLAGS=/mingw/include

SDL_LIBS=/mingw/lib

./configure --enable-ffplay --enable-memalign-hack --enable-libamr-nb --enable-libamr-wb --enable-nonfree --extra-ldflags=-L/usr/local/lib --extra-cflags=-I/usr/local/include

执行以下脚本:

rm -rf config.*

sh ffmpeg-conf02.sh

make

其中rm -rf config.*是为了确保config.h文件能被重写。如果不删除而是覆盖的话,可能会有不能写入覆盖的情况,所以,每次重新从configure开始的编译的话,还是执行下这个rm命令把configure产生的文件都干掉。

这样编译出来的ffplay就可以播放3gp文件了。(附件提供)

15. libmp3lame库加入

首先到lame-3.97.tar.gz (不要最新的版本3.98.2,ms有些问题,说audio专码的buffer不够)

下载地址:http://download.csdn.net/source/3361391

解压到~下。

执行以下脚本:

./configure --disable-shared

make

make install

进入ffmpeg-0.5目录,

保存以下脚本为ffmpeg-conf03.sh

SDL_CFLAGS=/mingw/include

SDL_LIBS=/mingw/lib

./configure --enable-ffplay --enable-static --disable-shared --enable-memalign-h

ack --enable-libamr-nb --enable-libamr-wb --enable-libmp3lame --enable-nonfree -

-extra-ldflags=-L/usr/local/lib --extra-cflags=-I/usr/local/include

执行以下脚本:

rm -rf config.*

sh ffmpeg-conf03.sh

make

make后就可以使用ffmpeg玩MP3的转码了

ffmpeg -i d:/video/01.avi -vcodec mpeg2video -acodec libmp3lame 01.mpg

16. libfaac及libfaad库加入

下载faac及faad的源码:

faac下载地址:http://download.csdn.net/source/3361394
faad下载地址:http://download.csdn.net/source/3361395

分别解压到~下。

注释掉faad2-2.7/frontend/main.c的第34行:


/*#define off_t __int64*/

分别执行:

./bootstrap

./configure --disable-shared --without-mp4v2

make

make install

进入ffmpeg-0.5目录,
保存以下脚本为ffmpeg-conf04.sh

SDL_CFLAGS=/mingw/include

SDL_LIBS=/mingw/lib

./configure --enable-ffplay --enable-static --disable-shared --enable-memalign-h

ack --enable-libamr-nb --enable-libamr-wb --enable-libmp3lame --enable-libfaac -

-enable-libfaad --enable-gpl --enable-nonfree --extra-ldflags=-L/usr/local/lib -

-extra-cflags=-I/usr/local/include

执行以下脚本:

rm -rf config.*

sh ffmpeg-conf04.sh

make

make后就ffmpeg就可以使用faac及faad了。

ffmpeg -i d:/video/02.mp3 -acodec libfaac 01.aac

17. 修改Msys的字体及背景色

用文本编辑器打开C:/Msys/msys.bat,如下:

if "x%MINGW32BGCOLOR%" == "x" set MINGW32BGCOLOR=Black

if "x%MINGW32FGCOLOR%" == "x" set MINGW32FGCOLOR=Yellow



start rxvt -backspacekey -sl 2500 -fg %FGCOLOR% -bg %BGCOLOR% -sr -fn "Courier New-20" -tn msys -geometry 80x30 -e /bin/sh --login -i

其中上面的Black及Yellow都是颜色。下面的-fn后面跟"字体-大小",80x30为每行80个字符,共显示30行。这都是Jeremiah喜欢的设置。

18. x264编码支持

下载x264源码需要用git。

git clone git://git.videolan.org/x264.git

或者去http://download.videolan.org/x264/snapshots/中下载,基本上每天都有更新,一天两个版本,其中一个是stable版。

将源码解压到~下,执行

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

make

make install

进入ffmpeg-0.5目录,

保存以下脚本为ffmpeg-conf04.sh

#this is enable amr mp3 aac aad x264

SDL_CFLAGS=/mingw/include

SDL_LIBS=/mingw/lib

./configure /

--enable-ffplay /

--enable-static /

--disable-shared /

--enable-memalign-hack /

--enable-libamr-nb /

--enable-libamr-wb /

--enable-libmp3lame /

--enable-libfaac /

--enable-libfaad /

--enable-gpl /

--enable-nonfree /

--enable-libx264 /

--extra-ldflags=-L/usr/local/lib /

--extra-cflags=-I/usr/local/include

执行以下脚本:

rm -rf config.*

sh ffmpeg-conf05.sh

make

make成功后,使用x264,如下:

$ ffmpeg -i d:/01.avi -f psp -acodec libfaac -ab 94k -vcodec libx264 -cqp 28 -coder 1 -refs 3 -deblockalpha 1 -deblockbeta -1 -me_method umh -subq 9 -me_range 32 -trellis 2 -chromaoffset -2 -nr 0 -bf 2 -b_strategy 1 -bframebias 0 -directpred 3 -g 250 -i_qfactor
1.3 -b_qfactor 1.4 -flags2 +bpyramid+wpred+mixed_refs+8x8dct -er 2 -s 480x320 d:/01.mp4

参考网址:
http://wiki.videolan.org/Win32CompileMSYS

]http://www.cnblogs.com/sunlin886/archive/2007/03/18/678863.html
http://hi.baidu.com/yeyingxian/blog/item/a03576d966b2892910df9b28.html
本文出自 “Jeremiah的流媒体乐园” 博客,出处/article/4430504.html

转载时有改动。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: