windows平台下编译FFmpeg

时间:2022-10-05 04:35:55

一、概述

        1.什么是FFmpeg?

         FFmpeg是一个开源免费平台的视频和音频流方案,属于*软件。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec。FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。

       FFmpeg主要由一下几个部分组成:
  • libavcodec: 一个包含了所有FFmpeg音视频编解码器的库。

  • libavformat: 一个包含了所有的普通音视格式的解析器和 产生器的库。
  • 三个实例程序,这三个实例较为复杂,基本可以作为API使用手册:
    • ffmpeg:命令行的视频格式转换程序。
    • ffplay:视频播放程序。(需要SDL支持,本人编译后没有见到)
    • ffserver:多媒体服务器(本人编译后没有见到)
      更多内容可参考百度百科和FFmpeg的官方网站的说明:http://ffmpeg.org/about.html

二、在Windows平台下编译FFmpeg

       由于FFMpeg是基于Linux开发的开源项目,源代码和Windows下最常见的Visual Studio提供的C/C++编译器不兼容,因此它不能使用MSVC++编译。要想使用FFMpeg,可以在Windows下配置一个类似Linux的编译环境,将FFMpeg编译为二进制库以后,再利用其进行进一步开发。

      1.下载FFmpeg的源码

       在官网上可以下载到FFmpeg源码的最新版本:http://ffmpeg.org/download.html。如图所示:

windows平台下编译FFmpeg

2.准备编译环境

       由于vs不能编译,所以我们在Windows下配置一个类似Linux的编译环境(GCC),这个需要MinGW和MSYS。我们这里不对MinGW和MSYS做详细讨论,可以去官网上查看:http://www.mingw.org/和百度。

2.1下载MinGW-MSYS合并安装包

     在http://sourceforge.net/projects/mingwbundle/files/下载MinGW-MSYS合并安装包,如图所示:

windows平台下编译FFmpeg

下载完成后,直接安装,使用默认路径即可(MinGWd的默认路径为:C\minGW;MSYS的默认路径为C\msys\1.0),安装完成后,把C:\msys\1.0\bin文件夹复制出来,备份保存。

       注意:安装时可能会报错,说某某folder does not exist,在安装目录下(C\minGW)添加bin,include,lib三个文件夹即可。

2.2.配置环境变量

      右击“计算机”--->属性--->高级--->环境变量, 在PATH的编辑框最后加上C:\MinGW\bin,记得加分号和前面的隔开。如图所示:

windows平台下编译FFmpeg


2.3下载MSYS

地址:http://download.csdn.net/detail/gameloft9/8554331

下载后,还是默认安装,安装前不用卸载前面第一步中安装的版本,也就是把第一步的版本给覆盖掉;

在安装结束的时候会提出DOS提示窗口:

最后一句为:
Do you wish to continue with the post install? [yn ]
输入n,结束安装即可。

2.4、将在第一步中提取出来的bin文件夹内容,复制到C:\msys\1.0\bin文件夹下覆盖现在的文件;

2.5、http://yasm.tortall.net/Download.html上下载yasm的exe文件,需要根据自己的操作系统选择是Win32.exe还Win64.exe,如图所示:

windows平台下编译FFmpeg  

下载完后重命名为yasm.exe,放到MinGW安装目录的bin目录下。

       如果没有这一步操作,在后面编译ffmpeg的过程中,可能会提示找不到yasm命令。ffmpeg里面的汇编加速部分的代码需要用到它,如果禁用汇编加速,会影响编译出来的编解码库的运行效率

       到此环境就搭建好了,通过桌面的msys的图标或者安装目录下的msys.bat文件进入命令行,输入gcc --version查看gcc的情况,如图所示:

windows平台下编译FFmpeg

这样说明gcc是正常的。

3.编译FFmpeg

  到了这一步就开始了真正的编译。

3.1、将之前下载好了FFmpeg解压到某个目录,比如d:盘,如图所示:

windows平台下编译FFmpeg

3.2、通过桌面的msys的图标或者安装目录下的msys.bat文件进入命令行:

3.2.1、进入FFmepg的目录下并配置makefile

cd d:  
cd ffmpeg-2.6.1
./configure --enable-memalign-hack
这一步需要一点时间。

然后输入下面的命令:

make distclean        
$./configure --enable-memalign-hack --enable-ffserver --enable-network --enable-protocols --enable-muxers --disable-yasm --enable-shared --enable-w32threads --enable-gpl
make (编译)
make install (安装)
其中make执行的时间会比较长,请耐心等待。

对于以上命令,可以参考博客:http://blog.csdn.net/gameloft9/article/details/44807381

对于配置参数,用./configure –-help打开帮助,里面有解释。

安装完成后,所有的头文件、库文件都保存在C:\msys\1.0\local文件夹里,就可以使用了。

参考文献:

1.http://blog.csdn.net/harvic880925/article/details/8024445

2.http://blog.csdn.net/sky04/article/details/4008764

3.http://ffmpeg.org/

4.http://blog.csdn.net/hemingwang0902/article/details/4382429

5.http://bbs.chinavideo.org/forum.php?mod=forumdisplay&fid=10

此外有手工配置WinGW和msys的,见如下博客:

1.http://www.cnblogs.com/joiner/archive/2010/06/18/1759941.html

2.http://www.cnblogs.com/joiner/archive/2010/05/18/1738006.html

3.http://www.cnblogs.com/joiner/archive/2010/05/18/1738380.html

不过本人并未配置成功,总是提示一些dll文件缺失。

注:此次编译是安装到系统中的,可以在程序中通过批处理命令调用ffmpeg。

附:如果window下使用,又不想自己编译,可以下面的网址下载:

http://ffmpeg.zeranoe.com/builds/

windows平台下编译FFmpeg

里面有32位和64位之分,其中又分为静态链接库、动态链接库、开发版和源码版。如果是直接使用它的工具,使用静态链接库或者动态链接库版本,如果想做二次开发,则使用开发版,如果想学习源码,则使用源码版。