基于windows平台,dev-c++编译工具,搭建ffmpeg 编译环境
1 首先去ffmpeg官网下载最新的ffmpeg (ffmpeg源码路径:http://ffmpeg.zeranoe.com/builds/),对于如何在windows下面编译ffmpeg网上教程已经不计其数,在此不再赘述,我们直接取得最新的编译之后的文件,搭载开发环境; 对于ffmpeg 官网下面有如下几个目录:
根据自己的操作系统类型,选择所需要的版本,其次,对于我的机型是Windows下的64位,因此选择64-bit Downloads,接下来,有三个条目,第一个为静态库,第二个问动态库,第三个为开发库;那么我们选择动态库,以及开发库,由于编译时所西药的环境都在开发库中,同时我们运行我们的程序是需要动态库,那么我们只需要这两个条目,将其下载下来。
2 接下来我们下载最新的dev-c++ 然后将其安装,对此不再赘述;
3 我们得到的解压之后的文件分别为:
对于第一个文件夹:
第一个文件夹也就是dev解压之后,我们所需要的为 include 和 lib, 那么include包含我们所需要的头文件,lib包含我们所需要的库文件,其余可以删除。
对于第二个文件夹:
我们所需要的文件为:bin目录为我们运行所需要的动态库文件,其余可以删除.
准备工作已经就绪,我们目前所需要的文件夹就3个,一个include , 一个lib ,一个bin,
那么接下来我们开始配置环境。
4
首先dev-c++新建一个工程。
点击文件->新建->项目,之后自己选择目录,在此不再赘述.(可以选择c 工程,也可以选择c++工程)
5 然后复制源代码到新建的工程的cpp文件中。
6 点击,编译将会出现无数个错误,正如我们所预料的。
7 那么接下来,我们配置环境
7.1 选择工具->编译选项, 出现如下界面:
我们选择目录选项,出现如下信息:
然后将我们所解压的文件文件夹的路径添加进去。
对于库:我们将我们的lib文件夹的路径添加进去:
上面的红色标记是我的目录。
对于C和C++,我们将我们的include文件夹的路径添加进去
我的如上图红色标记所示。
更改之后点击确定
8
由于dev-c++是通过gcc 环境来编译代码,在此,我们普及一下知识,那么我们通常的做法如:
gcc main.c -omain -lpthread
8.1
对于-l参数,是告知我们所需要的库文件,那么它的全名是libpthread.a 那么我们在写的时候只需要写pthread .省略掉lib和.a字符.(l是大写L的小写)
8.2 对于-L参数 ,告知所需要的库文件的路径。就是上面我们所配置的路径
8.2 对于-I 参数,告知头文件路径; (I是 小写i的大写)
很显眼我们需要配置编译选项,也就是如上面的-l(8.1)参数;
9 同样打开工具,编译选项。
如上面红色标记看到的。出现了 -lpthread -lavcodec.dll -lavformat.dll -lavutil.dll -swscale.dll 那么这些库文件的全名是什么呀?
正如8.1所看到的, 对于 -lavcodec.dll 那么他的全名肯定是 libavcodec.dll.a ,其他的都如此,那么这些文件在哪里呀,
就在我们刚才解压得到的lib的文件夹中,那么它怎么知道在哪里呀,刚才我们配置了库文件的路径,所以一切都迎刃而解。
9 至此,我们配置就算完成了。
点击编译 ,运行。编译通过;
然后我们点击运行,将会出现需要动态库,那么,我们刚才解压之后的bin目录,就是我们所需要的,将文件夹下动态库文件复制到应用程序的目录下,就是你建立的工程的目录下。然后点击运行,OK.
10
至此我们已经搞定.我们接下来测试。进入windows的cmd窗口,然后进入我们的工程目录,生成了一个.exe文件,那么这个文件就是我们所需要的。测试的cpp源码可以在http://blog.csdn.net/fengfeifengfei/article/details/43410205复制粘贴;如果错误,那么就是ffmpeg版本更新,函数发生变化导致,那么查阅相关文档,就可解决;
使用格式为:
应用程序名.exe hello.ts(各种视频文件格式,如hello.avi等等),运行结果如下图:
备注:由于是cpp文件,ffmpeg是有纯c编译的,那么我们在头文件中的要添加 extern "C"{ }
如:
extern "C"
{
#include "libavformat/avformat.h"
#include "libavcodec/avcodec.h"
#include "libavutil/avutil.h"
#include "libswscale/swscale.h"
}