前言
之前我们进行了 FFmepg 的编译以及在 Visual Studio 中引用 FFmpeg 库:FFmpeg入门及编译,本文记录在 QT 环境中搭建 FFmepg 工程。
ffmpeg+QT开发环境搭建
1、新建 QT 工程
2、拷贝所需的 lib 文件和头文件
将之前编译的 lib 文件以及整个 include 目录下的文件拷贝到 QT 项目目录下
如下图所示:
2、拷贝所需的 dll 动态库文件
然后将之前编译的 bin 文件加的所有 .dll 动态库复制到 qt 编译后的 debug文件夹下。
如下图所示:
3、修改 QT 项目的主配置文件 (.pro 文件)
修改 QT 项目的主配置文件 (.pro 文件),指定头文件及 lib 库文件路径,新增下面内容:
INCLUDEPATH += $$PWD/include
LIBS += $$PWD/lib/avcodec.lib
$$PWD/lib/avdevice.lib
$$PWD/lib/avfilter.lib
$$PWD/lib/avformat.lib
$$PWD/lib/avutil.lib
$$PWD/lib/swresample.lib
$$PWD/lib/swscale.lib
4、验证测试
以打印 av_version_info 的版本作为测试方法,将下面的程序复制到 main.cpp 中
```c
#include "mainwindow.h"
#include <QApplication>
#include <QDebug> // 利用打印函数
// ffmpeg 是纯 C 语言的代码,在 C++ 当中不能直接进行 include
extern "C" {
#include <libavcodec/avcodec.h>
}
int main(int argc, char *argv[])
{
qDebug() << "av version is:"<< av_version_info();
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
5、解决运行时的报错
D:ProjectQt_Projectbuild-ffmpeg_test-Desktop_Qt_5_14_2_MinGW_32_bit-Debug/…/ffmpeg_test/main.cpp:15: undefined reference to `av_version_info’
collect2.exe: error: ld returned 1 exit status
mingw32-make[1]: *** [Makefile.Debug:72: debug/ffmpeg_test.exe] Error 1
最后找到原因:原来是项目选择了 32 位的构建套件,而 FFmpeg 库是 64 位的!将项目改为 64 位后终于解决。
运行成功界面如下,会打印出:av version is: N-112010-g1a87a9d82a
原文地址:https://blog.csdn.net/qq_41839588/article/details/134674023
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_22546.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!