ffmpeg常用头文件和库文件包含

来源:互联网 发布:淘宝是什么时候成立的 编辑:程序博客网 时间:2024/05/29 04:03

在VC2008上用ffmpeg常用文件包含:

当然不太全,需要的时候在添加包含文件;


//VC中可能用到的一下宏定义,一般这些宏定义在stdint.h中有,如果没有可以添加;这里添加到ffmpeg包含头文件前定义就可以了;


#define snprintf _snprintf

extern "C"
{
#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
    #ifdef _STDINT_H
      #undef _STDINT_H
    #endif
  #include <stdint.h>
#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文件中转换相应指针;