由于FFmpeg是基于Linux开发的开源项目,源代码和Windows下最常见的Visual Studio提供的C/C++编译器不兼容,因此它不能使用MSVC++编译,需要在Windows下配置一个类似Linux的编译环境。本文主要记录Windows下FFmpeg编译的过程。
1.资源准备
准备编译过程所需的软件工具和源代码。
(1). MinGW-MSYS Bundle http://sourceforge.net/projects/mingwbundle/
(2). Yasm http://yasm.tortall.net/Download.html
(3). SDL http://www.libsdl.org/download-1.2.php
(4). X264 http://www.videolan.org/developers/x264.html
(5). FFmpeg http://www.ffmpeg.org/download.html
2.软件安装
(1).MinGW+Msys编译环境安装
一种方法是先安装mingw,再通过网络下载的方法来安装mingw和msys软件。安装好之后,再通过烦琐的配置,来搭建编译环境。另一种直接安装配置好的MinGW+Msys系统。为了降低安装过程的烦琐程度,选择第二种方法,安装MinGW+Msys编译环境。下载MinGW-MSYS Bundle软件后,直接安装程序,配置安装路径,按照软件默认的安装向导,即可把软件安装好。
安装完成后,需要配置msys.bat,用于启动类似于Linux环境的终端。若安装完成后,安装目标”C:msys1.0”下没有msys.bat,则需添加msys.bat文件,参考:https://code.google.com/p/msysgit/source/browse/msys.bat,然后,在msys.bat首行添加命令。
call "C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin/vcvars32.bat"
(2).安装Yasm
下载yasm源码包,解压到E:ffmpeg1.2yasm-1.2.0目录。
进行yasm目录,依次执行:
./configure –-prefix=/usr/local/yasm make make install
然后通过以下命令导入yasm环境变量。
export PATH=”$PATH:/usr/local/yasm/bin”
(3).安装SDL
下载SDL的源码包,解压到E:ffmpeg1.2SDL-1.12.15目录
进入SDL目录,依次执行
./configure -–prefix=/usr/local/SDL make make install
通过以下命令导入SDL环境变量。
export PATH=”$PATH:/usr/local/SDL/bin"
export C_INCLUDE_PATH="$C_INCLUDE_PATH:/usr/local/SDL/include/SDL"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/SDL/lib”
(4).安装x264
下载X264源代码包,解压到E:ffmpeg1.2x264
进入到x264目示,依次执行
./configure --enable-shared –-disable-asm -–prefix=/usr/local/x264 make make install
通过以下命令导入x264环境变量。
export PATH=”$PATH:/usr/local/x264/bin"
export C_INCLUDE_PATH="$C_INCLUDE_PATH:/usr/local/x264/include"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/x264/lib”
(5).安装FFmpeg
下载ffmpeg源代码包,解压到E:ffmpeg1.2ffmpeg1.2
进入到ffmpeg1.2目录,依次执行
./configure –-enable-shared -–disable-static –-enable-memalign-hack --enable-libx264 --enable-gpl –-prefix=/usr/local/ffmpeg1.2 make make install
安装完成后,可到D:msys1.0localffmpeg1.2目录,查看安装结果。
注意:
若需要ffmpeg支持其他视频音频编解码器,只需下载相应源代码,按照以下步骤安装:
配置(./configure)--->编译(make)--->安装(make install)--->导入环境变量(export)。
另外,在编译ffmpeg时,开启相应编解码器的配置即可。