QT配置FFmpeg出现错误原因

QT配置ffmpeg出现: undefined reference to “avcodec_version”

出现这种问题的意思就是找不到avcodec_version的定义,
原因有很多种,主要分为以下几种:

没有配置环境变量

环境变量配置有问题,建议重新检查一遍文件路径是否存在错误

如果将include、dll、lib文件存放到qt项目文件中也可以,只不过配置环境变量的话以后创建项目会更加方便

QT和FFmpeg的版本不对应

如果你的qt版本是32位,下载的FFmpeg是64位,则可能识别不了函数
在这里我提供了64位和32位的FFmpeg下载链接

32位链接: https://pan.baidu.com/s/1wBAv6yYYa_9n64wzmHdO2w
提取码:0703

64位链接: https://pan.baidu.com/s/1aEHWpbTQkhVA30KtfviYjA
提取码:0703

直接添加FFmpeg的头文件

因为ffmpeg是采用c语言实现的 所以QT c++工程种 需要导入c语言

extern "C"   
{
    //avcodec:编解码(最重要的库)
    #include <libavcodec/avcodec.h>
    //avformat:封装格式处理
    #include <libavformat/avformat.h>
    //swscale:视频像素数据格式转换
    #include <libswscale/swscale.h>
    //avdevice:各种设备的输入输出
    #include <libavdevice/avdevice.h>
    //avutil:工具库(大部分库都需要这个库的支持)
    #include <libavutil/avutil.h>
}

没有在.pro文件添加路径

没有在.pro文件添加ffmpeg路径也可能导致找不到avcodec_version函数

INCLUDEPATH +=$$PWD/ffmpeg/include

LIBS += $$PWD/ffmpeg/lib/avcodec.lib \
        $$PWD/ffmpeg/lib/avfilter.lib \
        $$PWD/ffmpeg/lib/avformat.lib \
        $$PWD/ffmpeg/lib/avutil.lib \
        $$PWD/ffmpeg/lib/postproc.lib \
        $$PWD/ffmpeg/lib/swresample.lib \
        $$PWD/ffmpeg/lib/swscale.lib

PWD就是当前目录,路径根据自己文件名字修改

QT 程序异常退出

配置FFmpeg时,qDebug()<<avcodec_version(),运行QT项目就会程序异常退出,主要的原因有两种

没有在debug文件里面存放dll库

需要将你的ffmpeg文件复制到QT的项目工程文件中
打开下载的ffmpeg文件,打开bin文件
在这里插入图片描述
将所有的文件复制到debug项目文件中
为以防万一,我把ffmpeg文件也复制到debug文件了
在这里插入图片描述
再次qDebug() avcodec_version函数,已经不会再出现程序异常退出的情况
在这里插入图片描述

亲测有效,如果还是有问题的话,可以评论区留言

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北方以南ccc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值