首页 > 代码库 > 编译FFmpeg的win32平台库
编译FFmpeg的win32平台库
一、目的
FFmpeg是一套可以用来录制、转码音视频,并能将其转化为流的开源流媒体程序。采用LGPL或GPL许可证。它包含了非常先进的音频/视频编解码库,为了保证高可移植性和编解码质量,里面的很多代码都是从头开发的。
FFmpeg是在Linux平台下开发的,如果想要编译出在Windows平台下使用的库,一种方法是使用交叉编译。网上有一个人叫zeranoe,他提供了FFmpeg的Windows平台开发SDK(网址:https://ffmpeg.zeranoe.com/builds/),同时他也提供了搭建交叉编译环境的脚本(网址:https://ffmpeg.zeranoe.com/blog/?cat=4)。FFmpeg默认有很多库没有包含的,比如libfaac、libx264等,我们就利用zeranoe提供的脚本搭建交叉编译环境,然后自己编译FFmpeg的Windows平台的SDK(包含libfaac、libx264)。
二、编译环境
1、电脑配置
系统:ubuntu15.10 64位
cpu:Intel® Core™2 Duo CPU T6570 @ 2.10GHz × 2
2、文件目录
我把需要下载的文件统一放到/home/hjc/下,这个可以根据你的需要放到别的地方。
如上图ffmpeg存放源码、ffmpeg_build存放编译生成的中间文件以及库和可执行程序、ffmpeg_dependency存放你需要FFmpeg额外支持的库(libfaac、libx264等)、mingw-w64存放交叉编译环境的文件。
a、ffmpeg下载方法:在/home/hjc/下执行:
#git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
b、libx264下载方法:我是直接在“https://ffmpeg.zeranoe.com/builds”/页面下载的压缩包,然后解压到/home/hjc/ffmpeg_dependency/下面。
libfaac下载方法 :进入“http://www.audiocoding.com/downloads.html”下载“Version 1.28 bootstrapped TAR.GZ Package”,然后同样解压到 /home/hjc/ffmpeg_dependency/下面。
c、交叉编译脚本下载方法:进入/home/hjc/mingw-w64/下执行:
#wget http://zeranoe.com/scripts/mingw_w64_build/mingw-w64-build-3.6.7
三、编译方法
1、搭建交叉编译环境
进入/home/hjc/mingw-w64/
执行:
#chmod 777 mingw-w64-build-3.6.7
执行:
#./mingw-w64-build-3.6.7
开始会提示有一些依赖库没有安装,根据它建议的安装包的名字进行安装,执行:
apt-get install texinfo cvs yasm subversion git flex bison”
即可安装对应的包。
然后再次执行: ./mingw-w64-build-3.6.7 根据提示一步一步走下去,即可完成交叉编译环境的安装。
最后将交叉编译的可执行程序所在目录加到环境变量中,
执行:
#echo "export PATH="/home/hjc/mingw-w64/mingw-w64-i686/bin:$PATH"" >> /etc/profile#source /etc/profile
2、编译依赖的第三方库
ffmpeg_build目录如下:
third_party目录下存放第三方库和头文件。
win32存放ffmpeg编译生成的库和头文件。
a、编译libfaac
进入/home/hjc/ffmpeg_dependency/faac-1.28/ 执行:
#./configure --host=i686-w64-mingw32 --prefix=/home/hjc/ffmpeg_build/third_party/ --enable-static --disable-shared --with-mp4v2=no#make#make install
b、编译libx264
进入/home/hjc/ffmpeg_dependency/x264-20160613-3f5ed56/ 执行:
#./configure --host=i686-w64-mingw32 --prefix=/home/hjc/ffmpeg_build/third_party --enable-static --cross-prefix=i686-w64-mingw32-#make#make install
执行后在/home/hjc/ffmpeg_build/third_party/下面确认是否生成了库和头文件。
3、编译FFmpeg
进入/home/hjc/ffmpeg_build/win32/执行:
#../../ffmpeg/configure --enable-static --disable-shared --enable-version3 --enable-gpl --enable-nonfree --disable-pthreads --enable-w32threads --enable-runtime-cpudetect --enable-memalign-hack --enable-libfaac --enable-libx264 --enable-zlib --enable-cross-compile --target-os=mingw32 --arch=x86 --prefix=/home/hjc/ffmpeg_build/win32/ --cross-prefix=i686-w64-mingw32- --extra-cflags="-I/home/hjc/ffmpeg_build/third_party/include" --extra-ldflags="-L/home/hjc/ffmpeg_build/third_party/lib"#make#make install
然后在/home/hjc/ffmpeg_build/win32/下确认是否生成了include和lib文件夹,如下:
如果生成了如上图所示的文件,表示编译成功了。
编译FFmpeg的win32平台库