FFmpeg+vs2013开发环境配置(windows)

1、下载ffmpeg包(dll、include、lib)https://ffmpeg.zeranoe.com/builds/

有3个版本:Static、Shared和Dev

  • Static ---包含3个应用程序:ffmpeg.exe , ffplay.exe , ffprobe.exe,相关的DLL已经被编译到exe里了。
  • Shared---包含3个应用程序之外还包含一些DLL,exe体积很小,在运行时到相应的DLL中调用功能。
  • Dev ---开发者(developer)版本,包含了库文件XXX.lib和头文件XXX.h,不包含exe.

开发者下载Shared(include、lib)和Dev(dll),依据自己电脑选择相应的平台下载,本文下载的是:

FFmpeg+vs2013开发环境配置(windows)

2、环境配置

2.1 新建工程

FFmpeg+vs2013开发环境配置(windows)

2.2 将1中准备的dll、include、lib拷贝到2.1建立的tutorial02工程目录

FFmpeg+vs2013开发环境配置(windows)

2.3 右击工程“属性”

FFmpeg+vs2013开发环境配置(windows)

2.4 “c/c++”---->"附加包含目录"---->添加2.2中拷贝到tutorial02工程目录下的“include”路径

FFmpeg+vs2013开发环境配置(windows)

2.5 “连接器”---->"常规"---->“附加库目录”---->添加2.2中拷贝到tutorial02工程目录下的“lib”路径

FFmpeg+vs2013开发环境配置(windows)

2.6 “连接器”---->"输入"---->“附加依赖项“---->添加“avcodec.lib;avformat.lib;avutil.lib;avdevice.lib;avfilter.lib;postproc.lib;swresample.lib;swscale.lib;”

FFmpeg+vs2013开发环境配置(windows)

3、测试

在ffmpeg-3.4.2-win64-dev\examples目录下复制metagata.c源码到新建的tutorial02.cpp文件中,这是一个独立的demo,作用是打印音视频媒体文件基本信息。

注意!!!有些人下载的metadata.c里面的头文件如下左图所示,需要修改为右图所示

why?C++工程直接调用ffmpeg的c函数库会导致c函数无法解析,用extern "C"进行声明即可

FFmpeg+vs2013开发环境配置(windows)------------>FFmpeg+vs2013开发环境配置(windows)

测试代码(metadata.c):

#ifndefINT64_C

#defineINT64_C(c) (c ## LL)

#defineUINT64_C(c) (c ## ULL)

#endif

#include<stdio.h>

#include"stdafx.h"

#include<stdlib.h>

//#include <libavformat/avformat.h>

//#include <libavutil/dict.h>

extern"C"

{

#include<libavformat/avformat.h>

#include<libavutil/dict.h>

}

#pragmacomment(lib,"avformat.lib")

#pragmacomment(lib,"avutil.lib")

intmain(intargc,char**argv)

{

AVFormatContext*fmt_ctx =NULL;

AVDictionaryEntry*tag =NULL;

intret;

if(argc!= 2) {

printf("usage: %s <input_file>\n"

"example program to demonstrate the use of the libavformat metadata API.\n"

"\n",argv[0]);

return1;

}

av_register_all();

if((ret = avformat_open_input(&fmt_ctx,argv[1],NULL,NULL)))

returnret;

while((tag = av_dict_get(fmt_ctx->metadata,"", tag,AV_DICT_IGNORE_SUFFIX)))

printf("%s=%s\n", tag->key, tag->value);

avformat_close_input(&fmt_ctx);

return0;

}

运行结果:

4、出现的错误

4.1编译出现---error LNK2019: 无法解析的外部符号

解决方法:

1) ffmpeg的环境已经配置好(第2部分)

2)配置管理器--平台由Win32修改为x64(原因未知)参考 https://blog.csdn.net/ljh0302/article/details/50011587

4.2 运行程序,弹如下错误

FFmpeg+vs2013开发环境配置(windows)

解决方法:将文件夹内的dll文件拷贝到Debug文件夹内

FFmpeg+vs2013开发环境配置(windows)

5、参考资料

1 https://ffmpeg.zeranoe.com/builds/

2/3 https://blog.csdn.net/spaceyqy/article/details/43115391

https://blog.csdn.net/qq_28425595/article/details/51488869

https://www.cnblogs.com/bhlsheji/p/5359390.html

4.1 https://blog.csdn.net/ljh0302/article/details/50011587

相关推荐