网上介绍这方面的文档很多,99%都是采用msys+MinGW的方式。我这篇文章也属于这个范围。
1、准备工作:
在干活之前,先把下面五个软件下载下来。
1)MinGW-MSYS Bundle http://sourceforge.net/projects/mingwbundle/
2) SDL http://www.libsdl.org/download-1.2.php
3)yasm http://yasm.tortall.net/Download.html
4)FFmpeg http://www.ffmpeg.org/download.html
5)pthreadgc2.dll http://www.dll-files.com/dllindex/dll-files.shtml?pthreadgc2
2、安装MinGW-MSYS Bundle软件
网上99%的方法都是先安装mingw,再通过网络下载的方法来安装mingw和msys软件。安装好之后,还需要通过烦琐的配置,来搭建编译环境。sourceforge开源平台给大家带来了福音,MinGW-MSYS Bundle软件同时包含了MinGW和MSYS,不需要连接网络进行安装,并且包含了最新的核心组件和库文件。
按照软件默认的安装向导,一路Next,把软件安装好。我是把软件装在了C盘。
3、安装SDL
到上文列出的SDL官方网站地址,下载SDL源码包。咱下载SDL最新的源码包SDL-1.2.14.tar.gz。
到ffmpeg网站,下在ffmpeg源码包,咱下的是最新的版本ffmpeg-0.8.7.tar.gz
把ffmpeg解压缩到C:\msys\1.0\ffmpeg-0.8.7\ffmpeg-0.8.7\ 目录,再把SDL解压缩到C:\msys\1.0\ffmpeg-0.8.7\ffmpeg-0.8.7\SDL-1.2.14目录。
进入SDL目录,分别执行
./configure --prefix=/usr
make
make install
完成SDL的安装。
SDL编译完成之后,生成的bin文件、include文件、lib文件存放在C:\msys\1.0\local\SDL目录下。
通过下面命令导入SDL环境变量.
export PATH="$PATH:/usr/local/SDL/bin:/usr/local/SDL/include/SDL:/usr/local/lib"
否则,在执行ffmpeg configure时,SDL support项显示为no.(注:mingw默认根目录对应与windows下的C:\msys\1.0\目录,可以通过echo $PATH查看当前的系统路径)
4、安装yasm
到yasm官方网站,下载最新的1.2.0版本的yasm源码包Source .tar.gz。
解压到C:\msys\1.0\ffmpeg-0.8.7\yasm-1.2.0目录。
进入yasm目录,分别执行:
./configure --prefix=/usr/local/yasm
make
make install
并通过下面命令导入yasm环境变量。
export PATH="$PATH:/usr/local/yasm/bin"
5、安装ffmpeg
进入ffmpeg代码目录C:\msys\1.0\ffmpeg-0.8.7\ffmpeg-0.8.7\, 分别执行下面命令:
./configure --enable-shared --disable-static --enable-memalign-hack
make
make install
编译完成后,在C:\MinGW\msys\1.0的bin、include和lib文件夹下可以看到编译结果。
make install 之后,ffplay.exe 、ffmpeg.exe等可执行程序安装到C:\MinGW\msys\1.0\bin路径下。
下图是执行ffplay.exe的结果。
6、拷贝pthreadgc2 动态链接库
pthreadgc2.dll是功能强大的处理数字化影视作品编辑软件premiere6运行所需的一个DLL文件。
在执行ffmpeg.exe程序的时候,可能会提示找不到该动态链接库,把该文件拷贝到ffmpeg执行程序目录即可。
参考文档:http://www.xue5.com/Developer/C++/493908.html