windows平台下编译FFmpeg

一、概述

        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。如图所示:


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合并安装包,如图所示:


下载完成后,直接安装,使用默认路径即可(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,记得加分号和前面的隔开。如图所示:



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,如图所示:

  

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

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

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


这样说明gcc是正常的。

3.编译FFmpeg

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

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


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/


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


Hyper fast Audio and Video encoder usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}... Getting help: -h -- print basic options -h long -- print more options -h full -- print all options (including all format and codec specific options, very long) See man ffmpeg for detailed description of the options. Print help / information / capabilities: -L show license -h topic show help -? topic show help -help topic show help --help topic show help -version show version -buildconf show build configuration -formats show available formats -devices show available devices -codecs show available codecs -decoders show available decoders -encoders show available encoders -bsfs show available bit stream filters -protocols show available protocols -filters show available filters -pix_fmts show available pixel formats -layouts show standard channel layouts -sample_fmts show available audio sample formats -colors show available color names -sources device list sources of the input device -sinks device list sinks of the output device Global options (affect whole program instead of just one file: -loglevel loglevel set logging level -v loglevel set logging level -report generate a report -max_alloc bytes set maximum size of a single allocated block -y overwrite output files -n never overwrite output files -stats print progress report during encoding -max_error_rate ratio of errors (0.0: no errors, 1.0: 100% error maximum error rate -bits_per_raw_sample number set the number of bits per raw sample -vol volume change audio volume (256=normal) Per-file main options: -f fmt force format -c codec codec name -codec codec
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值