[转]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”。

posted on 2013-02-27 14:41  mingw  阅读(395)  评论(0编辑  收藏  举报

导航