ffmpeg之QT开发环境搭建

文章目录

  • 前言
  • ffmpeg+QT开发环境搭建
    • 1、新建 QT 工程
    • 2、拷贝所需的 lib 文件和头文件
    • 2、拷贝所需的 dll 动态库文件
    • 3、修改 QT 项目的主配置文件 (.pro 文件)
    • 4、验证测试
    • 5、解决运行时的报错


前言

之前我们进行了 FFmepg 的编译以及在 Visual Studio 中引用 FFmpeg 库:FFmpeg入门及编译,本文记录在 QT 环境中搭建 FFmepg 工程。

QT 环境的安装这里不再赘述了,网上资源很多。


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:\Project\Qt_Project\build-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
在这里插入图片描述


我的qq:2442391036,欢迎交流!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/198376.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【双指针】四数之和

四数之和 建议做过了解三数之和的思想再做这道题&#xff0c;思路是一样的~ 题目描述 18. 四数之和 - 力扣&#xff08;LeetCode&#xff09; 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [num…

linux下的工具---gdb

一、gdb简介 GDB,是The GNU Project Debugger 的缩写&#xff0c;是 Linux 下功能全面的调试工具。 GDB支持断点、单步执行、打印变量、观察变量、查看寄存器、查看堆栈等调试手段。 程序的发布方式有两种&#xff0c;debug模式和release模式 Linux gcc/g出来的二进制程序&am…

HMM预习中文版

马尔可夫模型 在之前的笔记中&#xff0c;我们讨论了贝叶斯网络&#xff0c;以及它们如何被用于紧凑地表示随机变量之间的关系。现在&#xff0c;我们将介绍一个与之紧密相关的结构&#xff0c;称为马尔可夫模型&#xff0c;对于本课程的目的&#xff0c;可以将其视为类似于链…

windows10 Arcgis pro3.0-3.1

我先安装的arcgis pro3.0&#xff0c;然后下载的3.1。 3.0里面有pro、help、sdk、还有一些补丁包根据个人情况安装。 3.1里面也是这些。 下载 正版试用最新的 ArcGIS Pro 21 天教程&#xff0c;仅需五步&#xff01;-地理信息云 (giscloud.com.cn) 1、安装windowsdesktop-…

不同酿酒风格生产的葡萄酒有什么不同?

霞多丽适合大多数风格的葡萄酒制作&#xff0c;从干燥的静止葡萄酒&#xff0c;到起泡酒&#xff0c;再到甜美的晚收&#xff0c;甚至是植物酿酒。最广泛影响霞多丽葡萄酒最终结果的两个酿酒决定是是否使用乳酸发酵和用于葡萄酒的橡木影响程度。 通过乳酸发酵&#xff08;或MLF…

【运维】hive 高可用详解: Hive MetaStore HA、hive server HA原理详解;hive高可用实现

文章目录 一. hive高可用原理说明1. Hive MetaStore HA2. hive server HA 二. hive高可用实现1. 配置2. beeline链接测试3. zookeeper相关操作 一. hive高可用原理说明 1. Hive MetaStore HA Hive元数据存储在MetaStore中&#xff0c;包括表的定义、分区、表的属性等信息。 hi…

Linux僵死进程及文件操作

1.僵死进程(僵尸进程)&#xff1a; 1.僵死进程产生的原因或者条件: 什么是僵死进程? 当子进程先于父进程结束,父进程没有获取子进程的退出码,此时子进程变成僵死进程. 简而言之,就是子进程先结束,并且父进程没有获取它的退出码; 那么僵死进程产生的原因或者条件就是:子进…

时间序列分析【python代码实现】

时间序列分析是一种用于建模和分析时间上连续观测的统计方法。 它涉及研究数据在时间维度上的模式、趋势和周期性。常见的时间序列分析包括时间序列的平稳性检验、自相关性和部分自相关性分析、时间序列模型的建立和预测等。 下面是一个使用Python实现时间序列分析的示例&…

「C++」红黑树的插入(手撕红黑树系列)

&#x1f4bb;文章目录 &#x1f4c4;前言红黑树概念红黑树的结构红黑树节点的定义红黑树的定义红黑树的调整 红黑树的迭代器迭代器的声明operator( )opeartor--( ) 完整代码 &#x1f4d3;总结 &#x1f4c4;前言 作为一名程序员相信你一定有所听闻红黑树的大名&#xff0c;像…

xv6 磁盘中断流程和启动时调度流程

首发公号&#xff1a;Rand_cs 本文讲述 xv6 中的一些细节流程&#xff0c;还有对之前文中遗留的问题做一些补充说明&#xff0c;主要有以下几个问题&#xff1a; 一次完整的磁盘中断流程进入调度器后的详细流程sched 函数中的条件判断scheduler 函数中为什么要周期性关中断 …

微信小程序nodejs+vue+uniapp视力保养眼镜店连锁预约系统

作为一个视力保养连锁预约的网络系统&#xff0c;数据流量是非常大的&#xff0c;所以系统的设计必须满足使用方便&#xff0c;操作灵活的要求。所以在设计视力保养连锁预约系统应达到以下目标&#xff1a; &#xff08;1&#xff09;界面要美观友好&#xff0c;检索要快捷简易…

Unity 轨道展示系统(DollyMotion)

DollyMotion &#x1f371;功能展示&#x1f959;使用&#x1f4a1;设置路径点&#x1f4a1;触发点位切换&#x1f4a1;动态更新路径点&#x1f4a1;事件触发&#x1f4a1;设置路径&#x1f4a1;设置移动方案固定速度方向最近路径方向 &#x1f4a1;设置移动速度曲线 &#x1f…

vue3+ts 全局函数和变量的使用

<template><div>{{ $env }}<br />{{ $filters.format("的飞机") }}</div> </template><script setup lang"ts"> import { getCurrentInstance } from "vue"; const app getCurrentInstance(); console.log…

11.27/28 知识回顾与问题(Django之Web应用与http协议)

一、http有哪些主要版本以及特点 1. 主要版本以及各自特点 HTTP/0.9&#xff1a;最初版本的HTTP协议&#xff0c;只支持GET方法&#xff0c;并且没有请求头和响应头的概念&#xff0c;只能传输纯文本。于1991年发布&#xff0c;由Tim Berners-Lee创建&#xff0c;被认为是HTTP的…

AT89S52单片机的定时器

目录 定时器/计数器的结构 工作方式控制寄存器TMOD和TCON 定时器/计数器T1、T0的4种工作方式 1.方式0 2.方式1 3.方式2 4.方式3 定时器/计数器T2的结构与工作方式 1.T2的特殊功能寄存器T2MOD和T2CON 2.特殊功能寄存器T2CON 3.T2的三种工作模式 1. 捕捉方式 2.重新…

Ubuntu 22.04安装Go 1.21.4编译器

lsb_release -r看到操作系统版本是22.04,uname -r看到内核版本是uname -r。 sudo wget https://studygolang.com/dl/golang/go1.21.4.linux-amd64.tar.gz下载编译器。 sudo tar -zxf go1.21.4.linux-amd64.tar.gz -C /goroot将文件解压到/goroot目录下&#xff0c;这个命令…

人工智能技术发展漫谈

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 人工智能发展历程 人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;的发展历史可以追溯到20世纪中叶。以下是一些关键时刻和阶段&#xff1a; 起…

SELinux零知识学习三十七、SELinux策略语言之约束(1)

接前一篇文章:SELinux零知识学习三十六、SELinux策略语言之角色和用户(7) 四、SELinux策略语言之约束 SELinux对策略允许的访问提供了更严格的约束机制,不管策略的allow规则如何。 1. 近距离查看访问决定算法 为了理解约束的用途,先来看一下SELinux Linux安全模块(Lin…

SVD recommendation systems

SVD recommendation systems 为什么在推荐系统中使用SVD 一个好的推荐系统一定有小的RMSE R M S E 1 m ∑ i 1 m ( Y i − f ( x i ) 2 RMSE \sqrt{\frac{1}{m} \sum_{i1}^m(Y_i-f(x_i)^2} RMSEm1​i1∑m​(Yi​−f(xi​)2 ​ 希望模型能够在已知的ratings上有好的结果的…

高频Latex公式速查表,写论文技术博客不愁了

常见上下标X_{2}X^{2}\hat{X}\bar{X}\frac{1}{X}常见希腊字母\alpha \beta \gamma \delta \varepsilon \eta \theta \rho \sigma \phi \varphi \omega常见数学符号\leq \geq \neq\approx 其他\sum \prod \int \bigoplus \forall \exists \times \setminus \bigotimes \bigodot …
最新文章