在windows下使用MinGW编译ffmpeg0.6

来源:互联网 发布:mac的see sheer 编辑:程序博客网 时间:2024/05/17 09:24
眼下,网上关于ffmpeg编译的博客帖子很多,但绝大多数是过时的,已经无法使用的。这些过时的教程会浪费大家很多时间,至少我就浪费了1天。

    (1)编译ffmpeg0.6

    由于FFmpeg是在Linux下开发的,它用gcc来编译,要在windows下编译的话,就需要在windows下建立linux的环境,因此我们要使用mingw。

    mingw是ffdshow项目创建,到今天为止最新的安装包是mingw32_gcc441_20100504.exe。可以从http://sourceforge.net/projects/ffdshow-tryout/files/ 这里的Tools中下载。如下图所示:

对于不方便从sourceforge上下载的朋友,可以从http://download.csdn.net/source/2988856这里下载。

    下载安装mingw后,运行在安装目录下的\MSYS目录下的msys.bat。,我的是D:\MinGW32\MSYS\msys.bat。

    ffmpeg0.6的官方下载地址为:ffmpeg-0.6.tar.bz2,解压出来。也可以从http://download.csdn.net/source/2988907 这里下载。

    然后在mingw的控制台中进入ffmpeg源码目录,并执行命令:./configure --enable-memalign-hack  生成编译时所需的Makefile文件。然后执行 make 命令,就可以生成相应的exe文件,如ffmpeg.exe、 ffplay_g.exe、 ffmpeg_g.exe 等。

    如果要生成动态库(dll)或静态库(lib),则可以使用命令:./configure --enable-shared --disable-static --enable-memalign-hack 。这样就可以得到avcodec.dll、avdevice.dll、avformat.dll、avutil.dll、swscale.dll,以及对应的lib。

    如下图所示:

编译好后,可以运行一下ffmpeg,看看能不能正常运行。命令如:ffmpeg -i campus_path.avi -vcodec flv -f flv a.flv,将ffmpeg目录下的文件campus_path.avi(我自己放进去的文件)转换为a.flv文件。

    如果是用 ./configure --enable-memalign-hack 命令来只编译得到exe文件,则上面命令可以正常运行。

    如果是用 ./configure --enable-shared --disable-static --enable-memalign-hack 命令同时得到exe、dll、lib文件,则执行上面命令会提示错误,如下图所示:

这是因为编译了动态库和静态库后,ffmpeg.exe的运行就需要依赖这些库了,可以在ffmpeg目录下搜索.dll文件,然后把这些dll文件都复制到ffmpeg.exe相同的目录下。然后程序就可以正常运行了。

 

MinGw+MSYS编译ffmpeg生成DLL,缺少LIB文件

问题:msys + mingw下编译ffmpeg,生成不了lib,只有dll

解决:必须装入VC的库文件

步骤:

1.Start->Programs->Microsoft Visual C++ Express Edition->Visual Studio Tools->Visual Studio 2008 Command Prompt
cd c:\msys
msys.bat

简单的说就是进入vc的命令行工具,然后运行msys下的msys.bat文件

2.执行lib命令,输出如下:

 

3.之后的步骤和网上的一样了:

./configure --enable-memalign-hack --disable-static --enable-shared --disable-yasm --enable-debug

make distclean
./configure --enable-shared --disable-static --enable-memalign-hack
make
make install

参考资料:http://ffmpeg.arrozcru.org/wiki/index.php?title=Shared_LIB

http://xass.blog.163.com/blog/static/56168399201107102855746/

 

 后记:同样的方式在64位操作系统下生成的导入库后缀为dll.a,而在32位winxp下则生成的是lib。

原创粉丝点击