MinGw+Msys搭建环境 编译ffmpeg

    技术2022-05-19  18

    --------------------------------------介绍--------------------------------------------------

     

     

     

     

    MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时

     

     

     

    MinGW,即 Minimalist GNU For Windows。它是一些头文件和端口库的集合,该集合允许人们在没有第三方动态链接库的情况下使用 GCC产生 Windows32 程序。

     

    开发 MinGW 是为了那些不喜欢工作在 Linux(FreeBSD) 操作系统而留在 Windows 的人提供一套符合 GNU 的 GNU 工作环境。

    所以,使用 MinGW 我们就可以像在 Linux 下一样使用 GNU 程序开发工具。 

     

    Minimal GNU(POSIX)system on Windows,是一个小型的GNU环境,包括基本的bash,make等等。是Windows下最优秀的GNU环境。

     

     

     

     

     

     

    ---------------------------------------搭建-------------------------------------------------

    感谢软件业的告诉发展,可以让菜鸟们更容易地学习和搭建运行环境。

    本来搭建MinGW+MSys环境是一件麻烦事,可是新版本的MinGw直接安装就可以使用。下面是WinGW的网页http://www.mingw.org/wiki/InstallationHOWTOforMinGW.在里面下载最新版本的MinGW可以直接搭建MinGW+MSys环境。

     

    以下的小修改,为了实现ffmpeg的编译。

    3)修改“msys.bat”  用文本编辑器打开X:/msys/msys.bat,由于打算用MSVC++编译程序,所以需要有.lib文件才能链接到FFmpeg的库,这些.lib文件可以使用微软的工具链中lib命令产生。为此,机器上必须已经安装了微软的Visual Studio或是Visual C++。把下面一行加到msys.bat的最前面,把路径替换成机器上vcvars32.bat实际存在的路径,比如我的在“D:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/bin”,于是就添加:  call "D:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/bin/vcvars32.bat"

     

     

    4)系统整合  复制X:/msys/etc/fstab.sampleX:/msys/etc/fstab,用文本编辑器打开X:/msys/etc/fstab编辑。(需要使用一个支持Unix换行风格的编辑器,比如Notepad++),把下面这行:  X:/mingw /mingw  改为:  X:/msys/mingw /mingw

     

     

    好了,环境搭建完毕。进入编译ffmpeg阶段。

     

     

    --------------------------------------编译--------------------------------------------------

     

     

     

     

     

    3.      编译,获取FFMPEG库(头文件,lib,和DLL

    首先通过MSys安装目录下的msys.bat启动MSys,这时会出现一个命令行窗口,它是一个运行着bashrxvt程序,如下图:

     

    2

    这是一个类似Linuxshell并且在Windows上运行,就像是在使用一个真正的Linux shell。不过使用这个shell时需要注意:  目录名使用正斜杠来分割,而不是Windows所使用的反斜杠(比如说要写成"D:/ffmpeg"而不是"D:/ffmpeg")。  盘符(例如"C:/")可以从根目录处访问(像这样"/C/")。  文件名或目录名中如果带有空格,必须用双引号括起(例如这样"/C/Program Files",带有双引号)。  下面切换到存放FFmpeg源代码的目录(假如你的代码解压之后的路径是D/ffmpeg),方法是输入:"cd /D/ffmpeg"  接下来要配置FFmpeg,选择编译时包含的库,这里先输入:  ./configure --enable-shared --disable-static --enable-memalign-hack  --enable-memalign-hack选项是FFmpegWindows上编译成功所必须指定的,待配置完成后,将回到命令提示符,看到下图所示的画面:

    3

     

     

     

    如果没有错误的话,就可以"make"具有基本功能的FFmpeg了,在提示符后输入:make  编译的过程将持续很长时间。如果一切正常,结束后将返回提示符,并有如下的最后编译结束的输出画面:

    最后获取编译生成的ffmpeg库(头文件,libdll

     

    在提示符后输入:make install

     

     

     

     

     

     

    执行完后会生成几个文件下在MSys目录的local文件夹下。目录如:

     

     

    4.      VC下配置(这个指如何在VC中调用ffmpeg库),测试

    VC环境配置:(假如目录为上图所示)

    方法当然就像其他额外库一个,一种是设置VC全局的Include路径为你E:/msys/local/include,设置VC全局lib路径为E:/msys/local/bin,增加操作系统的一个Path

    E:/msys/local/bin。另一种就是设置某个工程的lib和Include的路径。增加一个指向上面对应的地址。这个我就不是说的详细,想必玩VC的都知道。

     

    首先 建一个VC的控制台工程,然后把E:/ffmpeg/libavcodec/api-example.c(ffmpeg的存放目录)拷贝到你建的那个工程。然后改名api-example.cpp。编译。你会发现却头文件。这个时候你需要将E:/msys/mingw/include(mingw安装目录下的include)的inttypes.h,stdint.h,_mingw.h三个文件拷到E:/msys/local/include(你ffmpeg库的目录下的include)。编译还是有很多错。

    1.       需要在inttypes.h中 #define __restrict__ __restrict

    2.       如果是long long 错误就改成__int64

    3.       c->time_base.den= (AVRational){1,25}; 改成    c->time_base.num = 1; c->time_base.den = 25;//

    4.       最上面的头文件定义如下:

    #include <math.h> // 注意这个别忘了,不然会出现math模板的一个错误

    #include <stdlib.h>

    #include <stdio.h>

    #include <string.h>     

     

    extern "C"

    {

          #ifdef HAVE_AV_CONFIG_H

          #undef HAVE_AV_CONFIG_H

          #endif

                

          #include <libavcodec/avcodec.h>

          #include <libavutil/mathematics.h>

     

          #pragma comment(lib, "avcodec.lib")

          #pragma comment(lib, "avutil.lib")

    }

     

    最后编译应该是不没有错误了。里面由于有些测试的视频文件没有,所以代码执行起来也看不出什么效果。用上面的一个代码,就是仅仅为了测试,然后告诉我们使用我们已经编译好的ffmpeg库还需要做那么的操作。

     

    (以上大部分转载于该空间http://apps.hi.baidu.com/share/detail/20685063,感谢他的无私奉献)

     

     

     

    首先通过MSys安装目录下的msys.bat启动MSys,这时会出现一个命令行窗口,它是一个运行着bashrxvt程序,如下图:

     

    2

    这是一个类似Linuxshell并且在Windows上运行,就像是在使用一个真正的Linux shell。不过使用这个shell时需要注意:  目录名使用正斜杠来分割,而不是Windows所使用的反斜杠(比如说要写成"D:/ffmpeg"而不是"D:/ffmpeg")。  盘符(例如"C:/")可以从根目录处访问(像这样"/C/")。  文件名或目录名中如果带有空格,必须用双引号括起(例如这样"/C/Program Files",带有双引号)。  下面切换到存放FFmpeg源代码的目录(假如你的代码解压之后的路径是D/ffmpeg),方法是输入:"cd /D/ffmpeg"  接下来要配置FFmpeg,选择编译时包含的库,这里先输入:  ./configure --enable-shared --disable-static --enable-memalign-hack  --enable-memalign-hack选项是FFmpegWindows上编译成功所必须指定的,待配置完成后,将回到命令提示符,看到下图所示的画面:

    3

     

      

      

     

    注意:改的这个目录为mingw你所安装的目录,所以按本文来讲是这个目录。如果你安装不目录不同,就要改成你所安装的目录。  完成以上步骤,MSys+MinGW系统就配置完成了。


    最新回复(0)