windows平台FFmpeg源码编译

原因:由于需要对比音频编码效果,自带aac和fkd_aac,mp3lame的差别,故需要进行手动编译FFmpeg并包含fdk_aac,mp3lame.

 

环境介绍:win7,64bit.vs2015.

准备:

 1:安装MinGW:http://www.mingw.org/(在线安装),也可以选择本地安装(https://sourceforge.net/projects/mingwbundle/

            1.1:我选择了在线安装,下载后点击运行,选择了全部安装,右键选择,最后点击Installation按钮下的apply changes.

            1.2:配置环境变量:path=C:\MinGW\bin\.                                         测试cmd gcc -v

  2:安装yasm汇编编译器,因为ffmepg中为了提高效率使用到了汇编指令.

            2.1:http://yasm.tortall.net/Download.html  选择win64.exe,修改名称为yasm.exe存放到c:/MinGW/msys/1.0/bin目录下.

  3:下载pkg-config-0.23-2.zip和依赖库

            3.1:http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.23-3_win32.zip

            3.2:http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.18/glib_2.18.4-1_win32.zip

            3.3:解压后将pkg-config.exe拷贝到C:/MinGW/bin/

   4:下载nasm

           4.1:https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/

           4.2:运行安装nasm2.13.03.exe,将安装后生成的nasm.exe拷贝到c:\MinGW\msys\1.0\bin\目录下.

   5:配置msys.bat文件

           5.1:修改C:\MinGW\msys\1.0\msys.bat文件,在@echo off前面添加如下一行

                    Call “C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\vcvars32.bat”

           5.2:C:/MinGW/msys/1.0/bin/link.exe修改为link_rename.exe.防止link.exe与VC的link.exe冲突.

 6:配置pkg-config

           6.1:将C:/MinGW/msys/1.0/etc/profile文件在

                 if [ $MSYSTEM == MINGW32 ]; then export PATH=".:/usr/local/bin:/mingw/bin:/bin:$PATH" else export                                         PATH=".:/usr/local/bin:/bin:/mingw/bin:$PATH" fi

                 后面添加

                 if [ -z “$PKG_CONFIG” ]; then export PKG_CONFIG=C:/MinGW/bin/pkg-config.exe fi

                 if [ -z “$PKG_CONFIG_PATH” ]; then

                 export PKG_CONFIG_PATH=MinGW/lib/pkgconfig:/usr/local/lib/pkgconfig fi

 

总结:通过MingW安装可以看到,虽然是64位系统,但是安装的msys为win32,所以可以知道下面我们生成的静态库和程序都是32位程序,如果希望生成64位程序的话,需要下载mingw-64.以上为工作配置完成,接下来下载源码

 

编译mp3lame

           1:下载地址:http://sourceforge.net/projects/lame/files/ 版本为3.99.5(最新版本需要langinfo.h头文件),且去除                                   lame/include/libmp3lame.sym中lame_init_old方法.且configure中去除xmmintrin.h头文件的引用.

           2:运行C:\MinGW\msys\1.0\msys.bat,cd到源码目录

           3:./configure ,make,make install.可以在C:\MinGW\msys\1.0\local看到生成的文件.

 

编译libfdk-aac

           1:下载地址: https://github.com/mstorsjo/fdk-aac.git

            2:通过msys.bat进入当前目录

            3:./autogen.sh     ,./configure,make,make install

            4:在此插一句关于libfdk-aac生成vs2015解决方案.只需要在源码目录下创建CMakeLists.txt.通过Cmake进行编译就可以.

 

FFmpeg源码编译

             1:下载地址:https://github.com/FFmpeg/FFmpeg

             2:通过msys.bat进入当前目录

             3:cofigure --enable-shared --disable-static --enable-nonfree --enable-gpl –enable-version3 --enable-libfdk-aac --enable-libmp3lame --extra-cflags=-I/C:/MinGW/msys/1.0/local/include --extra-ldflags=-L/C:/MinGW/msys/1.0/local/lib

extra-cflags和extra-ldflags为引用第三方插件头文件和.a,如果没有引用则会提示启用的这些模块找不到.

            4:make ,make install

 

安装FFmpeg运行的dll

libiconv-2.dll编译安装

            1:下载http://www.gnu.org/software/libiconv/

             2:./configure  make make install

 

libgcc_s_dw2-1.dll

             1:将MinGW/bin目录下的当前库拷贝到msys/1.0/local/bin下

 

通过生成的FFmepg.exe,可以看到音频编码有了libfdk_aac和libmp3lame.

 

总结:在编译时遇到了很多问题,但是流程总体如上.如果需要增加某些模块,则只需要下载源码进行编译,生成头文件和静态库,则通过FFmpeg的configure进行启用模块即可进行关联.而且有些开源模块的编译会遇到一些问题.

上一篇:c – std :: namespace中的isnan是什么?更一般地说,什么时候std ::必要,可选或者要避免?


下一篇:C语言I博客作业02