[转]Windows下的ffmpeg编译
最近搞Windows下的ffmpeg编译,参考了网上的这篇文章编译通过 http://www.cnblogs.com/acloud/archive/2011/11/04/ffmpeg.html
以下摘抄其内容:
1、 下载编译环境MinGW+Msys,地址是:http://sourceforge.net/projects/mingwbundle/files/,在这个页面上点击Download下载那个zip文件。下载完成后,直接安装,不建议修改任何默认路径。(推荐离线安装,上面这个链接是用来下载离线安装包的。)
2、在http://yasm.tortall.net/Download.html上下载yasm的exe文件(需要根据自己的操作系统选择是Win32.exe还Win64.exe),下载完后重命名为yasm.exe,放到MinGW安装目录的bin目录下。(c:\mingw\bin)
如果没有这一步操作,在后面编译ffmpeg的过程中,可能会提示找不到yasm命令。ffmpeg里面的汇编加速部分的代码需要用到它,如果禁用汇编加速,会影响编译出来的编解码库的运行效率。
3、下载ffmpeg,在http://ffmpeg.org/download.html可以找到最新的版本,我下载的是http://ffmpeg.org/releases/ffmpeg-0.8.5.tar.gz。下载完成后解压到某处待命。(http://ffmpeg.org/releases有许多版本可以下载,个人编译通过1.0和1.1版本)
4、通过桌面或开始菜单的快捷方式,进入MinGW的命令行。(金山毒霸会认为那个快捷方式存在问题,别理它,保留)
这个shell的粘贴功能是shift+insert。
5、进入ffmpeg的解压目录,使用configure命令配置ffmpeg的编译参数。
一般来说,编译出dll、lib及exe的配置项为
./configure --disable-static --enable-shared --enable-memalign-hack
由于个人在项目中仅需要h.264视频解码及swscale转换功能,因此我在以下的参数中,禁用了大量我用不着的内容。一方面加快编译的速度,另外一方面编译出来的库会比较小(但是不会生成.exe,而且还会报avfilter.dll出错,不过,没关系了。可能在最后的配置里提示说git命令没找到,这个不用理它)
./configure --disable-static --enable-shared --enable-memalign-hack --disable-debug --disable-network --disable-ffserver --disable-ffplay --disable-devices --disable-protocols --disable-demuxers --disable-muxers --disable-encoders --disable-decoders --disable-parsers --disable-bsfs --enable-decoder=h264
6、输入make进行编译。
在ffmpeg的各个库目录下会生成对应的lib和dll,由于上面个人的配置已经令生成的dll体积很小,因此就把make后的dll直接拿来在项目用,忽略下面的部署。
7、编译完成后,输入make install进行部署。
如果没有修改过msys的安装路径,那么生成的文件会部署在“C:\msys\1.0\local”目录下。
生成的动态库在“msys目录\local\bin”目录下;
链接库文件在“msys目录\local\lib”目录下的,*.dll.a为动态库需要的链接文件,*.a为纯静态库(不依赖dll);修改扩展名为.lib就可以用了。
需要的头文件在“msys目录\local\include”目录下。
经过部署的dll文件体积会小很多。
之前公司用的编译环境MinGW+Msys也是网上下载别人编译好的,但它编译出来swscale.dll有问题,查了下gcc版本是4.3.3的,现在新环境使用的是4.5.2,这个太坑爹了。
还有就是以前环境不能解析通过ffmpeg1.1版本的common.mak,现在换了新环境就可以了。
在vs2005下编译时,可能会报“无法打开包括文件:stdint.h”,在“工具>>选项>>项目和解决方案>>VC++目录>>包含文件”下添加“c:\mingw\include”。