再次尝试windows下msys+MinGW编译ffmpeg


电脑上安装太多的开源库,环境变量里面一些常用的头文件都有几种,以前使用的编译ffmpeg的方法现在常常提示错误。从config.log中看,这些错误往往都是一些头文件引用错误导致。
由于项目中继续编译自己的ffmpeg,本次从零开始,搭建msys+mingw的编译环境。
参考网友资源,特此表示感谢。 http://blog.csdn.net/chen_chun_guang/article/details/7023638
首先说明本次实验环境:windows xp安装虚拟机vmware 8.0,在虚拟机里安装了一个windows xp,除了UltraEdit用于查看文档,不安装多余的软件。
1. 下载需要的资源,做好准备工作。
1) MinGW-MSYS Bundle   http://sourceforge.net/projects/mingwbundle/ mingw-msys-0.6-x86.zip 2012-08-21
2) SDL   http://www.libsdl.org/   1.2.15
3) yasm   http://yasm.tortall.net/   1.2.0
4) FFmpeg   http://www.ffmpeg.org/   1.2.1
5) pthreadgc2.dll   http://www.dll-files.com 2.9.0.0 百度google一堆

2. 安装MinGW-MSYS Bundle.
下载来的mingw-msys-0.6-x86.zip,大约100MB多点。解压后直接双击。默认路径安装。
会在C盘占用三个文件夹。C:/MinGW、 C:/msys和 C:Program FilesMinGW-MSYS ,桌面生成一个快捷方式MinGW-MSYS可以直接启动命令行。以下所有操作都是从这里进入命令行。
这和我以前使用mingw-get-inst-20120426.exe在线安装的方法默认路径不一样,而且也不需要联网下载。

3. 编译安装SDL
没有SDL支持,就没法使用ffplay.exe播放。
本次试验使用建立工作目录C:msys1.0ffmpegSDL-1.2.15,将SDL源码解压到SDL-1.2.15。
进入SDL目录,编译命令很简单。

$ ./configure --prefix=/usr/local/SDL
$ make
$ make install

完成SDL的安装。
通过下面命令导入SDL环境变量.

$ export PATH="$PATH:/usr/local/SDL/bin:/usr/local/SDL/include/SDL:/usr/local/lib"
是否成功,可以使用命令查看
$ echo $PATH

4. 编译安装yasm
将下载的yasm-1.2.0.tar.gz,解压到C:msys1.0ffmpegyasm-1.2.0
进入yasm目录,分别执行命令:

$ ./configure --prefix=/usr/local/yasm
$ make
$ make install

并通过下面命令导入yasm环境变量。

$ export PATH="$PATH:/usr/local/yasm/bin"

5. 编译ffmpeg
将下载的ffmpeg-1.2.1.tar.bz2,解压到C:msys1.0ffmpegffmpeg-1.2.1
进入ffmpeg-1.2.1目录,分别执行命令:

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

本次忘记指定安装路径了,就生成在默认路径下/usr/local,编译选项没有disable一些选项,编译时间有点长。
下面多出来四个文件夹bin lib include share,对应ffmpeg的编译结果。
6. 使用ffmpeg.exe如果提示缺少pthreadgc2.dll,就把下载来的pthreadgc2.dll放到这个bin文件夹。

下面来看看编译结果。

原文地址:https://www.cnblogs.com/zzugyl/p/3186170.html