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

本文介绍了如何在Windows环境中配置FFmpeg与Visual Studio 2013的开发环境,包括静态和动态链接的设置,以及开发者版本的库文件和头文件的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  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),依据自己电脑选择相应的平台下载,本文下载的是:
      
2、环境配置
2.1 新建工程
           
2.2  将1中准备的dll、include、lib拷贝到2.1建立的tutorial02工程目录
         
2.3 右击工程“属性”
      
2.4 “c/c++”---->"附加包含目录"---->添加2.2中拷贝到tutorial02工程目录下的“include”路径
       
2.5 “连接器”---->"常规"---->“附加库目录”---->添加2.2中拷贝到tutorial02工程目录下的“lib”路径
      
2.6  “连接器”---->"输入"---->“附加依赖项“---->添加“avcodec.lib;avformat.lib;avutil.lib;avdevice.lib;avfilter.lib;postproc.lib;swresample.lib;swscale.lib;”
        
3、测试
在ffmpeg-3.4.2-win64-dev\examples目录下复制metagata.c源码到新建的tutorial02.cpp文件中,这是一个独立的demo,作用是打印音视频媒体文件基本信息。
注意!!! 有些人下载的metadata.c里面的头文件如下左图所示,需要修改为右图所示
why? C++工程直接调用ffmpeg的c函数库会导致c函数无法解析,用extern "C"进行声明即可
--------->          

测试代码(metadata.c):
#ifndef  INT64_C
#define  INT64_C  (c)  (c ## LL)
#define  UINT64_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>
}

#pragma  comment  ( lib ,  "avformat.lib" )
#pragma  comment  ( lib ,  "avutil.lib" )

int  main( int  argc ,  char  **  argv )
{
                  AVFormatContext  *fmt_ctx =  NULL  ;
                  AVDictionaryEntry  *tag =  NULL  ;
                  int  ret;

                  if  ( argc  != 2) {
                                printf(  "usage: %s <input_file>\n"
                                                  "example program to demonstrate the use of the libavformat metadata API.\n"
                                                  "\n" ,  argv  [0]);
                                  return  1;
                }

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

                  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);
                  return  0;
}
运行结果:
     

4、出现的错误
4.1  编译出现---error LNK2019: 无法解析的外部符号                                                                                                                                                                                          
    解决方法:
         1) ffmpeg的环境已经配置好(第2部分)
         2)配置管理器--平台由Win32修改为x64(原因未知)参考 https://blog.youkuaiyun.com/ljh0302/article/details/50011587
      
4.2  运行程序,弹如下错误
     
      解决方法: 将文件夹内的dll文件拷贝到Debug文件夹内
     
5、参考资料
    1      https://ffmpeg.zeranoe.com/builds/   
            https://www.cnblogs.com/bhlsheji/p/5359390.html
    4.1   https://blog.youkuaiyun.com/ljh0302/article/details/50011587
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值