WinXP下编译ffmpeg

2012年4月2日 发表评论 阅读评论

偷的,呵呵;http://hi.baidu.com/iruler/blog/item/e06c60b34922fca5d9335a22.html

WinXP下编译ffmpeg

今天开始编译ffmpeg这个让人爱恨交加的东西了。由于VC++并非是一个标准的C编译器,所以ffmpeg使用的C99以及at&t汇编语法在VC下无法编译通过,我曾经从ffmpeg中提取过h263++的编码器,在不使用mmx优化选项的情况下,对C代码进行少许的改动还是能够编译通过和正常使用的,但是没有MMX优化的东西使用起来还是不爽的。

采用MINGW在window平台下编译ffmpeg是个不错的选择,当然如果你有兴趣可以把它完全移植到VC环境下,我曾经的老板这么做过,(这是他的命根子,我连看一看的机会都没有,呵呵)据说移植了百万行代码。不过我怎么没发现有那么多呢。不过在VC下编译ffmpeg 会比用Mingw编译小很多,好像是500多K.。

下面就说说用Mingw如何编译ffmpeg 吧。

第一步:应该是安装和配置编译环境,我的做法比较简单,首先我去下载了一个DEV-CPP编译器,它包含了最新的Mingw。如果你没有DEV-CPP,你可以直接下载并安装Mingw.下载地址是http://www.mingw.org/。我安装的版本是MinGW-3.1.0-1.exe,请顺手下载一个MSYS-1.0.10.exe它是windows下的一个虚拟linux shell环境,我们需要用它来执行 configure 、make 等命令。首先安装 MinGW到一个指定的目录,假设在c:\MinGW目录下吧。然后设置环境变量,在PATH中加入 c:\MinGW\BIN。然后安装MSYS ,安装的过程中会提示你进行一些配置,其中需要提示你输入MinGW 的安装目录。这里需要注意一下,请输入 C:/MinGW(搞不懂,我输入C:\MinGW居然告诉我找不到,呵呵,可能是开发者玩惯LINUX了吧)如果是安装了DEV-CPP那就输入C:/dev-cpp即可。哦,差点忘了,您安装MinGW的时候别忘了下载一个WINAPI的源码包,如果安装DEV-CPP就不用了。哎,建议你还是安装个DEV-CPP吧,这个小东西还是很不错的,需要的东西基本上都有了。好了,编译环境配置好了。

第二步:下载一个最新的ffmpeg源码包,我是通过CVS下载的,具体你可以看看ffmpeg的首页http://ffmpeg.sourceforge.net/index.php,通过CVS下载至少能保证你能得到最新的代码,ffmpeg的h264更新好像挺快的,呵呵。将ffmpeg源码解压缩到一个目录里,或者check-out 到一个目录里,在来个假设吧,D:\FFMpeg,运行桌面上的MSYS快捷方式,进入MSYS shell 里(如果安装没有创建快捷方式,晕我就不罗嗦了,安装目录里找MSYS.bat)。如果如下命令:

1、$ cd /d/ffmpeg 进入ffmpeg工程目录.

2、$ ./configure –enable-shared –enable-memalign-hack –disable-debug –enable-small

3、$ make

可以了,这是编译结束了,你可以在相应的目录里找到编译好的文件。如果不加–disable-debug –enable-small目标文件可能会很大,我的7M多。我下载的ffmpeg最新版本里有一个错误,在libavcodec目录下的snow.c文件的第3460行,pict->quality= ff_rate_estimate_qscale(&s->m);错误提示参数不够,我改成pict->quality= ff_rate_estimate_qscale(&s->m,0);编译顺利通过。

问题1、目标文件怎么会这么大呢?(其实没啥关系,make install 后会进一步缩小,大概avcodec.dll 1.6M)如果制作网络下载的CAB包可能会大了点。没关系,明天想其他办法了。

问题2、为啥导出这么多函数呢? 可能是我没仔细看MinGW的使用说明吧。有朋友知道MinGW如何制定导出函数麻烦能告诉我一下,谢谢。


转载请注明来自:[MSN Spaces]http://msn.shandian.biz/240.html

  1. 本文目前尚无任何评论.