QtAV环境配置

news2025/1/17 6:08:04

本文章主要是使用MSVC编译器,因为QtAV是依赖FFmpeg的,所以需要下载QtAV源码和QtAV-depends-windows-x86+x64;
官网地址:http://www.qtav.org/
Github 地址:https://github.com/wang-bin/QtAV

1,解压
将文件解压到同一个文件夹下:
在这里插入图片描述
2,修改.qmake.conf配置文件
在这里插入图片描述

INCLUDEPATH += $$PWD/../QtAV-depends-windows-x86+x64/include
LIBS += -L$$PWD/../QtAV-depends-windows-x86+x64/lib/x64

3.打开项目
在这里插入图片描述
在这里插入图片描述
4、分别构建Debug和Release
在这里插入图片描述
在这里插入图片描述
5.分别双击执行Debug和Release下的sdk_install.bat文件,会将QtAV编译的库和头文件,模块等都拷贝到Qt内部模块种。
在这里插入图片描述
在这里插入图片描述
6、新建工程
添加三个环境变量,主要是配置FFmpeg库的路径设置 CPATH 到 H:\QtCode\CSOI\CSOI\VisualizationSafety\VisualizationAVCell\QtAV-depends-windows-x86+x64\include
设置 LD_LIBRARY_PATH 到 H:\QtCode\CSOI\CSOI\VisualizationSafety\VisualizationAVCell\QtAV-depends-windows-x86+x64\bin\x64
设置 LIBRARY_PATH 到 H:\QtCode\CSOI\CSOI\VisualizationSafety\VisualizationAVCell\QtAV-depends-windows-x86+x64\lib\x64
在这里插入图片描述
.pro 文件中添加模块
在这里插入图片描述

INCLUDEPATH += $$PWD/QTAV/include
INCLUDEPATH += $$PWD/QTAV/include/QtAV
INCLUDEPATH += $$PWD/QTAV/include/QtAV/5.9.7/QtAV/private
INCLUDEPATH += $$PWD/QTAV/include/QtAV/private
INCLUDEPATH += $$PWD/QTAV/include/QtAVWidgets

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/QTAV/lib_win_x86_64/ -lcommon
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/QTAV/lib_win_x86_64/ -lcommond

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/QTAV/lib_win_x86_64/ -lQmlAV
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/QTAV/lib_win_x86_64/ -lQmlAVd

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/QTAV/lib_win_x86_64/ -lQtAV1
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/QTAV/lib_win_x86_64/ -lQtAVd1

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/QTAV/lib_win_x86_64/ -lQtAVWidgets1
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/QTAV/lib_win_x86_64/ -lQtAVWidgetsd1

.h

#include <QLabel>
#include <QtAV>
#include <QtAVWidgets>

using namespace QtAV;

class VisualizationAVCell : public QLabel
{
    Q_OBJECT
public:
    explicit VisualizationAVCell(QWidget *parent = nullptr);
    ~VisualizationAVCell();

signals:

public slots:
    void slot_play();

    void slot_pause();

    void slot_stop();

private:
    QtAV::VideoOutput *m_vo;
    QtAV::AVPlayer *m_player;
};

.cpp

#include <QDebug>
#include <QGridLayout>

VisualizationAVCell::VisualizationAVCell(QWidget *parent) : QLabel(parent)
{
    QtAV::Widgets::registerRenderers();

    m_player = new QtAV::AVPlayer(this);
    m_vo = new QtAV::VideoOutput(this);

    if(nullptr == m_vo->widget())
        return;

    QGridLayout *grid = new QGridLayout;
    grid->addWidget(m_vo->widget());
    this->setLayout(grid);
    m_player->setRenderer(m_vo);
}

VisualizationAVCell::~VisualizationAVCell()
{

}

void VisualizationAVCell::slot_play()
{
    m_player->play("H:/QtCode/CSOI/CSOI/testfile/av.mp4");
}

void VisualizationAVCell::slot_pause()
{
    m_player->pause();
}

void VisualizationAVCell::slot_stop()
{
    m_player->stop();
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

产品生命周期(PLM)发展历程及技术核心分析指导

产品生命周期管理(Product Lifecycle Management&#xff0c;简称PLM)&#xff0c;是一种为企业产品全生命周期提供服务的软件解决方案&#xff0c;可以应用于在单一地点或分散在多个地点的企业内部&#xff0c;以及在产品研发领域&#xff0c;具有协作关系的企业之间&#xff…

windows 锁屏时执行某个程序

目录 前言 1 打开锁屏事件 2 创建任务计划程序 3 测试 前言 以windows10为例&#xff0c;这个功能的核心是使用windows自带的“任务计划程序”&#xff0c;可以帮助您实现触发器操作。 1 打开锁屏事件 默认情况下&#xff0c;锁屏事件并不会被系统记录&#xff0c;需要手动打…

vue3项目的创建、入口文件、全局方法、生命周期函数、setup中的生命周期函数使用、data的函数方式

文章目录1. 创建vue3项目1.1 基于webpack的工程创建1.2 通过vite来创建vue3项目vue3插件推荐1.3 通过npm init vue3创建项目2. vue3入口文件3. vue3中的全局方法修改4. vue3中封装全局方法5. vue3生命周期函数6. setup中生命周期使用7. data函数方式1. 创建vue3项目 1.1 基于w…

Spring Boot中消息是什么?同步异步消息是啥/都包含那些技术?Activate MQ消息怎么整合

写在前面&#xff1a; 继续记录自己的SpringBoot学习之旅&#xff0c;这次是SpringBoot应用相关知识学习记录。若看不懂则建议先看前几篇博客&#xff0c;详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用&#xff01; 3.5.4 消息 3.5.4.1 简述 消息发送方&#xff1a;…

力扣(LeetCode)29. 两数相除(C++)

快速乘 题解只使用了 intintint 。 万恶的 INT_MININT\_MININT_MIN&#xff0c;怎么处理&#xff1f;打不过就加入——被除数和除数转为负数计算 。 xxx 除以 yyy &#xff0c;等于从 xxx 中拿出若干个 yyy 。 从 xxx 中拿出 yyy 的数量&#xff0c;就是 xyx\div yxy 的商。 y…

Allegro差分自动添加回流地孔操作指导

Allegro差分自动添加回流地孔操作指导 Allegro自带给差分添加回流地孔的功能,具体操作如下 点击connect命令,任意拉一对差分 鼠标右击,选择Return Path。。。,选择settings 会弹出设置的对话框,Assign net name给孔分配一个网络,一般是GND, Return Path via 选择添加…

2019年1+X 证书 Web 前端开发中级理论考试题目原题+答案——第五套

&#x1f4da;文章目录 &#x1f3af;关于1X标准 &#x1f3af;关于中级考点 ⏩&#x1f4bb;答案速查 理论题(满分100分)&#xff0c;包括单选题、多选题、判断题。 &#x1f4d1;一、单选题&#xff08;每小题2分&#xff0c;共30小题&#xff0c;共60分&#xff09; &…

Docker的基础命令

1.查找可用的镜像 docker search 镜像名 例&#xff1a;docker search nginxdocker search mysql2.拉取官方镜像&#xff08;及下载镜像&#xff09; docker pull 镜像名:标签例&#xff1a;docker pull nginx #表示现在最新版本的nginx镜像docker pull nginx:1.14…

使用frida发送微信消息给好友

前言 之前说过怎么用python来发送微信文本消息&#xff0c;原理大概就是构造内存机器码。其实frida也可以做类似操作&#xff0c;构造数据和机器码&#xff0c;然后调用。我就不重复操作了&#xff0c;这里说下另一种方法。 想使用frida来发送消息这个想法很早之前就有了&…

SQLlite

SQLlite ​ SQLite是一个软件库&#xff0c;实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。 一、什么是 SQLite ​ SQLite是一个进程内的库&#xff0c;实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库&…

Webpack 5 超详细解读(三)

21.babel-loader 使用 使用babel-loader对js文件进行处理&#xff0c;在lg.Webpack.js配置文件中配置js文件规则。 使用单独的插件进行转换 使用预设进行转换 使用babel.config.js配置文件进行babel配置 const path require(path) const CopyWebpackPlugin require(copy-W…

解决哈希冲突的方案

什么是哈希表 一种实现关联数组抽象数据类型的数据结构&#xff0c;这种结构可以将关键码映射到给定值。简单来说哈希表&#xff08;key-value&#xff09;之间存在一个映射关系&#xff0c;是键值对的关系&#xff0c;一个键对应一个值。 什么是哈希冲突 当两个不同的数经过…

基于 Text-CNN 的情感分析(文本分类)----概念与应用

文章目录基于Text-CNN情感分析卷积的基本概念Text-CNN的核心思想实现数据预处理批量处理操作--填充与截断拆分训练集与测试集定义Text-CNN模型设计模型定义与训练参数训练并评估模型结语基于Text-CNN情感分析 大家都知道&#xff0c;CNN(Convolutional Neural Network) 是深度…

非近轴衍射分束器的设计与严格分析

摘要 直接设计非近轴衍射分束器仍然是很困难的。由于有相对较大的分束角&#xff0c;元件的特征尺寸一般等于或小于工作波长。因此&#xff0c;它通常超出近轴建模方法的范围。在此示例中&#xff0c;将迭代傅里叶变换算法&#xff08;IFTA&#xff09;和薄元件近似&#xff08…

在线的MySQL数据库表结构对比工具

在项目部署上线前&#xff0c;测试版和正式版的数据库表结构做过哪些变更&#xff0c;如果没有做好实时记录&#xff0c;那么就需要对比找出差异&#xff0c;否则代码部分更新后&#xff0c;可能导致功能异常。 数据库表结构对比的工具很多&#xff0c;但是为了方便部署同步的…

Python 算法:线性回归及相关公式推导

0 前言 本文以一个小小的案例展开&#xff0c;主要讲解了线性回归的步骤、常用的两种求最优解的方法&#xff08;最小二乘法和sklearn回归算法及算法原理&#xff09;及相关函数、公式的过程推导。 相关环境&#xff1a;Windows 64位 Python3.9 scikit-learn1.0.2pandas1.4.2…

怎么在VMware上安装Linux?

推荐教程&#xff1a;Linux零基础快速入门到精通 下载CentOS操作系统 首先&#xff0c;我们需要下载操作系统的安装文件&#xff0c;本次使用CentOS7.6版本进行学习&#xff1a; https://vault.centos.org/7.6.1810/isos/x86_64/ (最后的/不要漏掉&#xff09; •或者直接…

02、Spring中的Bean实例化、作用域、生命周期及装配方式介绍

简介&#xff1a;本笔记主要介绍以下几点 1、Bean的常见属性及其子元素 2、实例化Bean的三种方式 3、Bean的生命周期和作用域 4、Bean的三种装配方式 1、Bean的配置 Spring简单来说就是一个大工厂&#xff0c;这个工厂负责创建和管理Spring容器中的Bean对象&#xff0c;如果要使…

基于深度学习的人脸表情识别的AR川剧变脸(一)

1、摘要 本项目分为两部分&#xff0c;第一个部分是人脸表情识别任务&#xff0c;第二部分是根据表情变化不同AR脸谱效果。 本文将第一部分&#xff0c;如何使用Keras训练一个人脸表情识别的卷积神经网络。 2、数据集处理 数据集我们使用FER2013PLUS人脸表情识别数据集&…

Spring Boot如何进行监控项目/SpringBoot Admin监控程序怎么用/监控程序可以监控到哪些信息

写在前面&#xff1a; 继续记录自己的SpringBoot学习之旅&#xff0c;这次是SpringBoot应用相关知识学习记录。若看不懂则建议先看前几篇博客&#xff0c;详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用&#xff01; 3.6 监控 3.6.1 意义 监控服务是否宕机监控服务运…