FFMPEGP 入门之所以很难,很大一部分原因是环境难以搭建

  • A+
所属分类:编程语言

FFMPEGP 入门之所以很难,很大一部分是环境难以搭配。

有时候照着别人的资料明明完全一样,还是不行。

这不光是环境搭配的问题,还有FFM存在着各个版本,且不兼容导致的。

还有一个是 头文件、DLL、LIB 要对应一致才可以。

另外一开始肯定不熟悉,不直接引入哪些头文件

自己编译的话,可能还要区分DEBUG、RELEASE版本

这些导致了,FFM很难入门,可能你花了很长时间,自己搭配环境时,总是出现这样那样的问题。

我也是在搭建环境时,遇到了很多问题,现在记录下来,也供大家做个参考。

MFC-FFM环境搭建

首先下载编译好的,我就不再费精力编译了,你如果想和我一样省事,可以下载这个编译好的。

下载地址:https://github.com/gudianxiaoshuo/FFMPEGP

我之前用过其它版本的,然后再用这个时候,发现很多问题,后来研究,是版本不一致导致的。所以将工程中,之前版本的ffm头文件、DLL、LIB都删除了,尤其是工程目录下的LIB,容易忽略掉。

目的就是,只用一个版本,不要多版本冲突,否则,你死都不知道怎么死的。

好,现在已经将其他版本清理干净了,开始环境搭建。

1 项目属性设置

VC++目录设置

FFMPEGP 入门之所以很难,很大一部分原因是环境难以搭建

FFMPEGP 入门之所以很难,很大一部分原因是环境难以搭建

avcodec.lib

avdevice.lib

avfilter.lib

avformat.lib

avutil.lib

postproc.lib

swresample.lib

swscale.lib

2 添加头文件

extern "C" //一定要以C的形式,加入头文件

{

#include "libavcodecavcodec.h"

#include "libavformatavformat.h"

#include "libswscaleswscale.h"

#include "libavdeviceavdevice.h"

#include "libavutilaudio_fifo.h"

};

//因为在项目属性中,已经设置了头文件ffminclude目录,所以这里头文件,会从ffminclude目录里查找

3 运行

目前来看,你添加了头文件,添加了LIB

写了一段示例程序

那应该可以了,但你运行时,有可能会碰到这样的链接错误

: error LNK2019: 无法解析的外部符号 "void __cdecl av_free(void *)" (?av_free@@YAXPAX@Z),该符号在函数

当然,如果没有这种错误,正常运行,那就没问题了。

但是,如果你和我一样,总是遇到最坏的情况,就像赶公交,急急忙忙赶到达公交站点,而要坐的那趟公交正好刚走,不得不再等一循环。

如果遇到这种情况,可以试试这种方式,添加LIB

//以C的方式引入

extern "C"

{

#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, "swresample.lib")

#pragma comment (lib, "swscale.lib")

};

如果,你还是遇到错误,就像我一样,总是遇到最坏的情景。

提示没有对应的DLL,这可能就是版本冲突了。

不同版本的LIB,需要的DLL文件名不同。

我就遇到了这个问题,后来查了下,原来我工程主目录下,有别的版本的LIB文件,这样,工程加载时,先搜索的工程主目录下的LIB,找到了就不再搜索别的了,导致了我用的这个版本的LIB没有正确加载。

这就是一开始说的,一定要清理干净其它版本的文件和DLL以及LIB,否则就够你头疼的,尤其是刚入门的,可能你都找不到到底哪里错了,明明和资料配置一样,还是错误,以致于让你怀疑人生。

weinxin
我的微信公众号
爱真理,得永生!          爱在灵灵久博客,网罗天下,福利大家!

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: