一、概述
1.什么是FFmpeg?
FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec。FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。
更多内容可参考百度百科和FFmpeg的官方网站的说明:http://ffmpeg.org/about.html
libavcodec: 一个包含了所有FFmpeg音视频编解码器的库。
libavformat: 一个包含了所有的普通音视格式的解析器和 产生器的库。三个实例程序,这三个实例较为复杂,基本可以作为API使用手册:
- ffmpeg:命令行的视频格式转换程序。
- ffplay:视频播放程序。(需要SDL支持,本人编译后没有见到)
- ffserver:多媒体服务器(本人编译后没有见到)
二、在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位之分,其中又分为静态链接库、动态链接库、开发版和源码版。如果是直接使用它的工具,使用静态链接库或者动态链接库版本,如果想做二次开发,则使用开发版,如果想学习源码,则使用源码版。