windows下编译ffmpeg的方法

网上介绍这方面的文档很多,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

你可能感兴趣的:(windows下编译ffmpeg的方法)