(如果有转载的请注明哈哈)

这个ffmpeg的使用看的是一头雾水,前两天还在一个劲地编译,也没编译成功。

请教了一个同学,说这个库很强大,一般不需要编译就可以使用。

这次直接从官网上下的 http://ffmpeg.zeranoe.com/builds/的

ffmpeg-20130906-git-bcd1c20-win64-static.7z   (静态编译)

ffmpeg-20130906-git-bcd1c20-win64-shared.7z  (动态编译的bin下面有相应的dll文件)

ffmpeg-20130906-git-bcd1c20-win64-dev.7z   (有库文件)

打不开的或者懒得找的,直接去下我整合好了的 http://download.csdn.net/detail/kuaile123/6232827(这是64位的)

(不好意思,后面才发现上传的那个里面的bin是static的,这里又重新发了一个http://download.csdn.net/detail/kuaile123/6237069)

里面的bin,include,lib都可以直接用,按平时配置vs的c++路径去配置就好了,注意博主的是64位的,按自己电脑来下载。

而且从官网上下载的文件缺少inttypes.h文件,上面的资源里面已经放进去了,编译不会出错,缺少的可以自己去下载。

下载下后两个,解压,需要用到的为ffmpeg-20130906-git-bcd1c20-win64-shared下的bin,ffmpeg-20130906-git-bcd1c20-win64-dev下的include和lib

用vs2010 新建工程,需要配置 include和lib,为ffmpeg-20130906-git-bcd1c20-win64-dev下的include和lib

配置 Executable Directories 的路径为 ffmpeg-20130906-git-bcd1c20-win64-shared下的bin

(但是这样运行程序时会出现缺少dll 文件程序无法启动,所以最好把dll文件放于工程下)

在程序中添加头文件,例如:

extern "C"{
#include <libavutil/opt.h>
#include <libavcodec/avcodec.h>
#include <libavutil/channel_layout.h>
#include <libavutil/common.h>
#include <libavutil/imgutils.h>
#include <libavutil/mathematics.h>
#include <libavutil/samplefmt.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
};

注意一定要加 extern "C"{},因为dll中封装的是.c 文件,函数接口不对,如果不添加会出现无法识别的外部符号。如:

error LNK2001: unresolved external symbol "void __cdecl av_close_input_file(struct AVFormatContext * 等

添加依赖的lib文件

#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")

还有注意有时编写代码会出现如下等:

error C3861: 'avcodec_decode_video': identifier not found

这是由于 ffmpeg版本问题,这个函数式旧版中的,新的版本里是'avcodec_decode_video2'

所以要下载最新版本,并参考 \ffmpeg-20130906-git-bcd1c20-win64-XX\doc\example 示例里面函数的用法

我用了 decoding_encoding.c 里面的一个函数调通了,可以用。

c++ 调用 ffmpeg 编程相关推荐

  1. C++调用ffmpeg命令推流【详细代码】

    我们可以使用ffmpeg命令进行很多工作,也可以在代码中调用ffmpeg指令进行相关操作,例如推流,录屏等,线面介绍C++调用ffmpeg命令进行rtmp推流.命令如下: ffmpeg.exe -re ...

  2. 【FFmpeg编程进阶】(15)FLV 编码器Codec初始化 ff_mpv_encode_init() 代码分析 -- 待更新

    [FFmpeg编程进阶](15)FLV 编码器Codec初始化 ff_mpv_encode_init 代码分析 一.ff_mpv_encode_init() 在前面分析<[FFmpeg编程进阶] ...

  3. Ubuntu 下使用go语言调用ffmpeg推流

    Ubuntu 下使用go语言调用ffmpeg推流Ubuntu 下使用go语言调用ffmpeg推流 win10 安装 Ubuntu Windows Subsystem for Linux(WSL)适用于 ...

  4. 轻松掌握FFmpeg编程:从架构到实践

    轻松掌握FFmpeg编程:从架构到实践 (Master FFmpeg Programming with Ease: From Architecture to Practice 引言 (Introduc ...

  5. golang直接调用ffmpeg预编译类库(windows)已更新

    MinGW介绍 MINGW(Minimalist GNU on Windows)是一个可以在windows下编译Linux程序的仿真linux编译环境,他提供了linux下的C.C++头文件.系统库和 ...

  6. 在visual studio 2010中调用ffmpeg

    转自:http://blog.sina.com.cn/s/blog_4178f4bf01018wqh.html 最近几天一直在折腾ffmpeg,在网上也查了许多资料,费了不少劲,现在在这里和大家分享一 ...

  7. Python3 调用ffmpeg

    Python3.6.2调用ffmpeg 去ffmpeg官网下载编译好的avcodec-57.dll.avutil-55.dll.swresample-2.dll,准备好了C语言写出的库. 下面是用Py ...

  8. 转载给ffmpeg入门级:我的第一个调用FFmpeg库的程序出炉

    好消息,写了第一个使用了ffmpeg的库的小程序. 看起来就是这么简单的一个消息,但是you have no idea how much work that I did before it works ...

  9. Android Java调用ffmpeg命令

    0. 前言 ffmpeg命令很强大,但是在Android工程中无法执行可执行文件ffmpeg,即无法使用ffmpeg.  本文介绍把ffmpeg改造成库文件,然后通过JNI调用它,即可实现在Java中 ...

最新文章

  1. 洛谷P2462 [SDOI2007]游戏(哈希+最长路)
  2. bcb 如何在DLL中捕捉系统级异常
  3. Java IO 流 设计模式
  4. php配置xdebug调试
  5. 关于SQLContext过期,SparkSession登场
  6. Linux Crontab 任务管理工具命令以及示例
  7. php解析bt,php读取BT文件信息lightbenc.php库使用说明
  8. Windows10实用技巧-固定快捷方式到磁贴菜单方式
  9. 外卖优惠券公众号怎么做回复小程序链接
  10. 【数据结构PTA 7-158-161】
  11. 用matlab实现理查森外推算法,数值代数理查森外推法
  12. QT5.14.2+VS2019 构建套件(Kit)黄色感叹号问题解决
  13. 手机浏览器点击input放大问题
  14. mysql utf8mb4 错_MYSQL保存特殊字符失败,用编码utf8mb4解决错误 Incorrect string value ...解决方法...
  15. mysql 数据库1
  16. MIMO-OFDM无线通信技术及MATLAB实现(3)MIMO信道模型
  17. 概率漫谈 转自 林达华
  18. jQuery—常用API(jQuery 属性操作、jQuery 文本属性值、jQuery 元素操作)
  19. GWO(灰狼优化)算法MATLAB源码逐行中文注解
  20. HybridAPP框架MUI(跨平台移动端应用开发)

热门文章

  1. 本地Python连接服务器中的Mysql数据库
  2. 【LeetCode从零单排】No104 Maximum Depth of Binary Tree
  3. 关于vs2010编译程序一闪就没的解决办法
  4. commons-lang常用工具类StringEscapeUtils使用--转
  5. postman中 form-data、x-www-form-urlencoded、raw、binary的区别--转
  6. Java 编程的动态性,第 5 部分: 动态转换类--转载
  7. 5分钟了解vue-router的基本使用
  8. TensorFlow + Docker + PyCharm
  9. 后年将有60亿部手机!
  10. linux添加硬盘分区设置柱面,linux 下添加新硬盘设备和硬盘分区格式化挂载使用磁盘配额限制...