一、在windows上搭建基于ffmpeg解决方案的开发环境
系统 : Windows 10 x86_64系统 i5 4核cpu 8gb内存
工具: Visual Studio Community 2007
库文件和头文件:ffmpeg 开发库,这里需要Shared、Dev库,下载地址为《Windows ffmpeg Build》
Shared动态库dll:以及依赖dll的可执行文件。
Dev开发库:包含FFMPEG头文件的include,包含静态库的lib 【这种静态库只包含头元信息,这是需要Shared库原因】
注意:Shared和Static库原则上必须保持同一版本,否则可能无法引用
假设以上文件放置目录如下:
include 头文件 | d:/ffmpeg/include |
lib 静态库 | d:/ffmpeg/lib |
share 动态库 | d:/ffmpeg/share |
二、配置开发环境
1、根据自己的需要创建Visual C++的应用项目
2、环境配置
2.1 打开项目属性面板
2.2 选择【VC++目录】,配置include位置和lib
2.3 接下来选择【链接器 -> 输入 】中的【附加依赖项】进行编辑,添加静态库引用
正常情况下项目配置完成了,但是ffmpeg提供的lib文件不包含代码实现部分,因此我们需要添加dll库进来,这样运行会提示找不到dll文件。
3、添加dll动态链接库
添加dll文件的方式有2种,一般来说,我们需要把dll放到项目的根目录下,当然还有另一种方式就是链接的方式。
3.1 、添加dll到项目目录下
在visual studio 下,第一层路径为【解决方案路径】,dll需要放置到解决方案路径下的子项目中,换种说法是放置到包含vcxproj文件的目录下。这种方式一般用于项目发布。
因此,拷贝dll到项目目录下即可。
3.2、临时修改环境变量
运行环境会扫描path路径,可以将share库目录添加到path中,同样也可以临时性修改。
三、代码开发注意事项
1、由于ffmpeg 是基于gcc标准开发的,因此在msvc上,需要关闭SDL检查
2、Visual Studio系统创建的项目是C++程序,引入的header需要注意
extern "C"{
#include ....
}
3、msvc编译时强制要求预定义__STDC_CONSTANT_MACROS,因此合并第二个,#include部分可以如下使用
#ifdef __cplusplus
extern "C"
{
#ifndef __STDC_CONSTANT_MACROS
#define __STDC_CONSTANT_MACROS
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
#include <libavutil/avutil.h>
#endif
}
#else
#ifndef __STDC_CONSTANT_MACROS
#define __STDC_CONSTANT_MACROS
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
#include <libavutil/avutil.h>
#endif
#endif
3、编译时cpu arc选择x64
综上,开发环境配置完成。