Fla
Windows下使用MinGW编译ffmpeg与x265
测试系统:Windows XP SP3 x86 & Windows 8.1 x64
2014年4月21日 luofl1992
1、准备工作
MinGW下载地址:http://sourceforge.net/projects/mingw/files/
点选:Installer>>mingw-get-setup.exe 进行下载,完成后开始安装 MinGW,前面的安装设置保持默认,进入到这里后,先在Basic Setup里面选择这样几项:
-base -g++ -developer-toolkit
如下图:
接着在All packages选MSYS里面的 system-builder:
选择完毕后,点Installations菜单,选择apply changes,然后确认开始下载这些库(约126个包需要下载)。
下载完成后,界面上会提示完毕,点击close按钮即可。然后下载yasm,是一个exe文件放到MinGW的安装目录的bin文件夹,重命名为yasm.exe,或者msys/1.0/bin目录下。下面开始的编译相应库和ffmpeg的操作需要使用MSYS,要修改C:\MinGW\msys\1.0\etc目下的fstab文件,如果不存在fstab,复制一份fstab.sample到当前目录,然后改名为:fstab,再修改其内容为
C:/MinGW/mingw /minGW
其中前面是MinGW的安装目录,也即为MinGW的安装路径,否则后面编译库的时候会提示缺少头文件。下面的操作,需要在命令行下完成,不同的是通过msys进入,即运行C:\MinGW\msys\1.0目录下的msys.bat批处理文件,进入一个模拟linux系统的命令行。如下图,注意切换目录时,相对目录与windows下一致,切换到其他盘时不同,如下图:
2、编译ffmpeg
ffmpeg可以到 http://www.ffmpeg.org/releases/ 下载,我下载的是最新版本2.2版。(注意下载的文件后缀名应该是 .tar.gz 如果下载下来没有这两个点的后缀,请自己加上再解压)或者:https://github.com/FFmpeg/FFmpeg 点界面右边的Download Zip下载。
为了支持额外的扩展库编解码,需要额外下载。
首先编译x264库,下载地址:http://www.videolan.org/developers/x264.html
ftp://ftp.videolan.org/pub/videolan/x264/snapshots/
下载源码后解压,编译安装:
./configure --prefix=/olibs --enable-shared --enable-static (注意中间是两个英文的减号,prefix项目指定库的安装目录,配置要2~3分钟的时间)
make (如果提示出错了最好先执行make clean命令,大概10分钟)
make install(无错误的话进行下一步,有错误的话检查一下上面的操作是否有所遗漏)
然后是编译x265库:(最新的版本已经有支持配置选项)
下载tortoiseHG,到目录https://bitbucket.org/multicoreware/x265/src下载最新版本,编译x265需要安装cmake用来生成工程文件,注意下载最新版本,最新的x265需要cmake2.8.8以上版本。安装cmake完毕(注意设置添加到PATH)后重新进入到x265/build/msys目录,执行 make-Makefiles.sh。
这里会报错,Win8.1 x64提示是缺少三个文件( xp系统中没有提示可以直接出现下面界面)
x86_64-w64-mingw32-g++ x86_64-w64-mingw32-gcc x86_64-w64-mingw32-windres
直接将 MinGW目录下的Bin目录下 g++、gcc、windres三个文件拷贝,然后重命名成对应的即可,然后出现了这样的界面(1处设置为C:\MinGW\msys\1.0\olibs,2处设置为bin,3处设置为lib,2和3是相对于1的路径):
先点下面的configure,然后点generate即可,然后关闭,回到命令行。同上面的执行
make 然后是 make install。最后编译成功应该可以找到对应的lib文件在olibs目录下。
最后编译ffmpeg
假设安装路径为/FFmpeg/Release(相对于MSYS目录的位置),假设第三方库所在路径为/olibs,配置编译,注意下面蓝色的可能不好用(在Win8.1下尝试时总是提示找不到libx264库,最后将MinGW安装目录下的msys\1.0\olibs里面的结果bin、include和lib中的库和头文件拷贝一份到MinGW安装目录下的对应目录中(比如lib目录对应lib目录)配置如下,灰色的可以选用:
./configure --prefix=/FFmpeg/Release --disable-debug --disable-static --enable-shared --extra-cflags=-I/olibs/include --extra-ldflags=-L/olibs/lib --enable-gpl --enable-libx264 --enable-libx265 \
--enable-version3 --enable-avfilter --enable-avfilter-lavf --enable-memalign-hack --enable-avisynth \
--enable-libgsm \
--enable-libmp3lame
--enable-libopencore-amrnb \
--enable-libopencore-amrwb \
--enable-libtheora \
--enable-libvorbis \
--enable-libxvid
make (配置不提示出错的话,就没啥问题了,安心等待喝杯咖啡,20~30分钟)
make install (编译完毕,最后安装)
最后可以在目录C:\MinGW\msys\1.0/FFmpeg/Release 找到编译的结果。
最后推荐一个ffmpeg常用的库:sdl,用来做播放器很简单。Ffmpeg解码其他格式需要添加相应的库,大家可以自行百度,或者在编译ffmpeg之前 ./configure –help 指令查看一下支持的库,然后上网查询一下对应的库即可。
本文到此结束。
最后祝大家(工作顺利||学业有成)
参考链接:
1、MinGW的安装与配置
http://www.cnblogs.com/azraelly/archive/2012/12/31/2840156.html
2、对ffmpeg支持库的编译说明比较详细
http://www.codecoolie.com/ffmpeg/compile-ffmpeg-under-windows/
3、提到了修改fstab文件
http://blog.chinaunix.net/uid-20718335-id-2980793.html