在VC2008上用ffmpeg常用文件包含:
当然不太全,需要的时候在添加包含文件;
//VC中可能用到的一下宏定义,一般这些宏定义在stdint.h中有,如果没有可以添加;这里添加到ffmpeg包含头文件前定义就可以了;
#define snprintf _snprintf
//
#ifdef __cplusplus
//C99整数范围常量. [纯C程序可以不用, 而C++程序必须定义该宏.]
#define __STDC_LIMIT_MACROS
//C99整数常量宏. [纯C程序可以不用, 而C++程序必须定义该宏.]
#define __STDC_CONSTANT_MACROS
// for int64_t print using PRId64 format.
#define __STDC_FORMAT_MACROS
#endif
#ifdef __cplusplus
extern "C"
{
#endif
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
#include <libavutil/imgutils.h>
#include <libavutil/opt.h>
#include <libavutil/mathematics.h>
#include <libavutil/samplefmt.h>
#ifdef __cplusplus
}
#endif
#pragma comment(lib,"avcodec.lib")
#pragma comment(lib,"avdevice.lib")
#pragma comment(lib,"avfilter.lib")
#pragma comment(lib,"avformat.lib")
#pragma comment(lib,"avutil.lib")
#pragma comment(lib,"postproc.lib")
#pragma comment(lib,"swresample.lib")
#pragma comment(lib,"swscale.lib")
#define M_PI 3.1415926
#define snprintf _snprintf
上面讲述了直接在C++中用ffmpeg,这里在说一个更加方便的方法:就是在C++中混合C,在C文件中编写ffmpeg代码,然后在C++中调用;
简单方法,就是一个.h+.c; 头文件 extern "C" 包含;
这里要注意的是,在c文件的方式添加ffmpeg头文件前,先添加 #define inline __inline; 因为c中的inlien和C++中不同;
示例:
// testC.h文件
#ifdef __cplusplus
extern "C"
{
#endif
void show();
#ifdef __cplusplus
}
#endif
//testC.c文件
void show()
{
printf(" Hello world! ");
}
如果想要避免头文件中的 所需要的头文件包含,可以在C文件中添加包含头文件, 头文件中的函数已 void * 作为参数与C文件交互,在C文件中转换相应指针;