首页 > 代码库 > 编译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平台库