美文网首页首页投稿(暂停使用,暂停投稿)
FFMPEGP 入门之所以很难,很大一部分是环境难以搭配。

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

作者: 古典小说 | 来源:发表于2017-11-18 09:28 被阅读0次

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

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

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

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

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

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

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

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

    MFC-FFM环境搭建

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

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

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

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

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

    1 项目属性设置

    VC++目录设置

    avcodec.lib

    avdevice.lib

    avfilter.lib

    avformat.lib

    avutil.lib

    postproc.lib

    swresample.lib

    swscale.lib

    2 添加头文件

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

    {

    #include "libavcodec\\avcodec.h"

    #include "libavformat\\avformat.h"

    #include "libswscale\\swscale.h"

    #include "libavdevice\\avdevice.h"

    #include "libavutil\\audio_fifo.h"

    };

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

    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,否则就够你头疼的,尤其是刚入门的,可能你都找不到到底哪里错了,明明和资料配置一样,还是错误,以致于让你怀疑人生。

    相关文章

      网友评论

        本文标题:FFMPEGP 入门之所以很难,很大一部分是环境难以搭配。

        本文链接:https://www.haomeiwen.com/subject/qcqevxtx.html