FFmpeg 编程之VS环境搭建

ffmpeg下载链接:https://ffmpeg.zeranoe.com/builds/

共有2部分:shared和dev, shared包含动态链接库,dev包含头文件和lib文件。

解压后将share内bin目录和dev内部include和lib文件放置在同一目录下,如D:\ffmpeg-4.2.2-win64。

新建环境变量名称FFMPEG_DIR,值为D:\ffmpeg-4.2.2-win64,编辑系统环境变量path,增加%FFMPEG_DIR%\bin(该部分能够使的在运行编译后的exe时自动调用相关dll,无需单独拷贝dll到exe目录)。

新建工程:文件->新建->项目->Win32控制台应用程序,更改为配置管理器为64位,注意下载的时64位的库。

打开属性面板:解决方案资源管理器->右键单击项目->属性
头文件配置:配置属性->C/C++->常规->附加包含目录,输入“$(FFMPEG_DIR)\include”
导入库配置:
配置属性->链接器->常规->附加库目录,输入“$(FFMPEG_DIR)\lib”
配置属性->链接器->输入->附加依赖项,输入对应的FFMPEG库avcodec.lib;avdevice.lib;avfilter.lib;avformat.lib;avutil.lib;postproc.lib;swresample.lib;swscale.lib;
动态库不用配置。

注意:

在VC下使用FFMPEG编译好的库,不仅仅需要包含include和lib文件就行,还需要做以下几步。(此方法适用于自己使用MinGW编译的库,也同样适用于从网上下载的编译好的库,例如http://ffmpeg.zeranoe.com/builds/

(1)将mingw安装目录下的include的inttypes.h,stdint.h,_mingw.h三个文件拷到你ffmpeg库的目录下的include
(2)在_mingw.h文件的结尾处(在#endif 一行之前)添加了一行:
#define __restrict__
(2)把所有long long改成了__int64,如果是直接在vs2008下编译,则这个修改应该是不需要的(这步我没有遇到)
(3)修改.cpp文件

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

#define __STDC_CONSTANT_MACROS
#ifdef __cplusplus
extern "C"

#endif
{
        #include "ffmpeg/avutil.h"
        #include "ffmpeg/avcodec.h"
        #include "ffmpeg/avformat.h"

#ifdef __cplusplus
}
#endif

(4)如果遇到error C3861: 'UINT64_C': identifier not found
在common.h里加入定义如下:
#ifndef INT64_C
#define INT64_C(c) (c ## LL)
#define UINT64_C(c) (c ## ULL)

#endif

发布了18 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zengshaoqing/article/details/105186343