多路h265监控录放开发-(9)通过拖拽到窗口完成渲染

xcamera_widget.h

class XCameraWidget :public QWidget
{Q_OBJECTpublic:XCameraWidget(QWidget* p = nullptr);//渲染视频void Draw();//123//清理资源,再一个窗口被覆盖后 清理之前窗口生成的资源1~XCameraWidget();//123
private:XDecodeTask* decode_ = nullptr;//123XDemuxTask* demux_ = nullptr;XVideoView* view_ = nullptr;};

xcamera_widget.cpp

XCameraWidget::XCameraWidget(QWidget* p) :QWidget(p)
{//接收拖拽this->setAcceptDrops(true);
}//拖拽松开
void XCameraWidget::dropEvent(QDropEvent* e)
{//拿到urlqDebug() << e->source()->objectName();auto wid = (QListWidget*)e->source();qDebug() << wid->currentRow();auto cam = XCameraConfig::Instance()->GetCam(wid->currentRow());Open(cam.sub_url);}bool XCameraWidget::Open(const char* url)
{if (demux_)demux_->Stop();if (decode_)decode_->Stop();//打开解封装线程demux_ = new XDemuxTask();if (!demux_->Open(url)){return false;}//打开视频解码器线程decode_ = new XDecodeTask();auto para = demux_->CopyVideoPara();if (!decode_->Open(para->para)){return false;}//设定解码线程接收解封装数据demux_->set_next(decode_);//初始化渲染参数view_ = XVideoView::Create();view_->set_win_id((void*)winId());view_->Init(para->para);//启动解封装和解码线程demux_->Start();decode_->Start();return true;
}//渲染视频
void XCameraWidget::Draw()
{if (!demux_ || !decode_ || !view_)return;auto f = decode_->GetFrame();if (!f)return;view_->DrawFrame(f);XFreeFrame(&f);
}//清理资源
XCameraWidget::~XCameraWidget()
{if (demux_){demux_->Stop();delete demux_;demux_ == nullptr;}if (decode_){decode_->Stop();delete decode_;decode_ == nullptr;}if (view_){view_->Close();delete view_;view_ = nullptr;}
}

xviewer.h        

   public://定时器渲染视频 回调函数void timerEvent(QTimerEvent* ev) override;//123

xviewer.cpp

//定时器渲染视频 回调函数
void XViewer::timerEvent(QTimerEvent* ev)//123
{//总窗口数量int wid_size = sizeof(cam_wids) / sizeof(QWidget*);for (int i = 0; i < wid_size; i++){if (cam_wids[i]){//渲染多窗口视频cam_wids[i]->Draw();}}}在xviewer的构造函数中最后一行添加  startTimer(1);即可启动计时器调用timerEvent函数来进行渲染

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

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

相关文章

spring-cloud 开发 - RestTemplate 远程调用 HTTP 接口

现在有这样一个场景&#xff0c;我们要实现一个订单服务和一个商品服务&#xff0c;两个服务程序部署在不同的服务器上&#xff0c;当我们获取订单信息时&#xff0c;订单信息中要包含有商品信息&#xff0c;所以订单服务要向商品服务发送请求获取商品信息&#xff0c;这个流程…

Linux平台I2C多字节数据、按页连续读写E2PROM Demo(AT24C16)

1&#xff09;Linux 平台I2C多字节数据按页连续读写E2PROM之AT24C16小知识&#xff0c;分享给将要学习或者正在学习Linux平台I2C多字节按页连续读写E2PROM开发的同学。 2&#xff09;内容属于原创&#xff0c;若转载&#xff0c;请说明出处。 3&#xff09;提供相关问题有偿答…

class中的溢出滑动效果

效果图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><style>*{margin: 0;padding: 0;}.frame-pages{width: 30%;height: 60px;display: flex;justify…

网络安全-如何设计一个安全的API(安全角度)

目录 API安全概述设计一个安全的API一个基本的API主要代码调用API的一些问题 BasicAuth认证流程主要代码问题 API Key流程主要代码问题 Bearer auth/Token auth流程 Digest Auth流程主要代码问题 JWT Token流程代码问题 Hmac流程主要代码问题 OAuth比较自定义请求签名身份认证&…

测试工程师常见的面试问题及回答建议

说起软件测试近几年的发展&#xff0c;其实已悄无声息地发生了巨大的变化。前几年随着互联网行业的迅猛发展&#xff0c;软件测试人才稀缺&#xff0c;低门槛高薪资促使大批毕业生和转行人员一窝蜂地涌入。而现在&#xff0c;软件测试发展太快&#xff0c;纵观各大招聘网站&…

一个端口可以建多少个tcp链接

Linux内核对TCP连接的识别是通过四元组来区分&#xff0c;即&#xff08;源ip&#xff0c;源port&#xff0c;目标ip&#xff0c;目标port&#xff09;。这个四元组只要任意一个不同&#xff0c;就是完全不同的连接&#xff01;所以说&#xff0c;只要建立的连接是不同的&#…

本科生大厂算法岗实习经验复盘:从投递到面试的底层思维!

目录 投递渠道boss直聘官网邮箱内推 面试准备leetcode八股深挖项目自我介绍mock面试技巧答不出来怎么办coding反问 复盘技术交流群用通俗易懂方式讲解系列 节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面…

Java中的JDBC编程:从数据库连接到高级查询

Java中的JDBC编程&#xff1a;从数据库连接到高级查询 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在现代应用程序开发中&#xff0c;与数据库的交互是一个…

猫头虎分享已解决Bug || Null Pointer Exception: `java.lang.NullPointerException`

猫头虎分享已解决Bug || Null Pointer Exception: java.lang.NullPointerException &#x1f63a;&#x1f42f; 关于猫头虎 大家好&#xff0c;我是猫头虎&#xff0c;别名猫头虎博主&#xff0c;擅长的技术领域包括云原生、前端、后端、运维和AI。我的博客主要分享技术教程…

嵌入式学习——数据结构(双向无头有环链表、内核链表、栈)——day48

1. 约瑟夫环问题——双向无头回环链表 1.1 问题描述 给定 ( n ) 个人&#xff08;编号为 ( 1, 2, \ldots, n )&#xff09;&#xff0c;他们围成一个圈。从第一个人开始报数&#xff0c;每报到第 ( k ) 个人时&#xff0c;杀掉这个人&#xff0c;然后从下一个人重新开始报数。…

【Git】 -- Part1 -- 基础操作

1. Git简介 Git 是一个开源的分布式版本控制系统&#xff0c;由 Linus Torvalds 于 2005 年开发&#xff0c;主要用于源代码管理。Git 允许多名开发者共同合作处理同一个项目&#xff0c;跟踪每个文件的修改&#xff0c;并且在必要时回滚到之前的版本。 Linus Torvalds是Linux…

面试突击:深入理解 Java 中的异常

本文已收录于&#xff1a;https://github.com/danmuking/all-in-one&#xff08;持续更新&#xff09; 前言 哈喽&#xff0c;大家好&#xff0c;我是 DanMu。今天想和大家聊聊 Java 中的异常。异常处理是一种重要的概念&#xff0c;因为程序总是会出现各种意料之外的问题&…

openEuler2203SP3自定义ios

需求&#xff1a; 1、legacy启动 2、/boot分区1G&#xff0c;剩余给/&#xff0c;lvm分区 3、创建root密码和一个普通用户user&#xff0c;密码Hello2024 4、服务器安装&#xff08;选上development、legacy-unix、security-tools&#xff09; 5、关闭firewalld、selinux …

通过xml配置实现数据动态导入导出Excel

spring-dj-excel-common.jar 一个可以通过动态配置 xml 建立 Excel 与数据关系现实数据导入导出的 spring 组件包&#xff0c;在 xml 配置文件里&#xff0c;你可以很方便的定义 Excel - sheet 表列头文本与数据表、数据实体属性的对应关系&#xff0c;对于创建 Excel 文件&…

尽管担任社长 宫崎英高95%时间还是在做游戏

宫崎英高表示&#xff0c;虽然他是 FromSoftware 工作室的社长&#xff0c;但他日常工作的绝大部分时间都是在指导游戏开发。因魂系列大获成功而成为 FromSoftware 社长的宫崎英高在接受《卫报》采访时表示&#xff0c;企业高管生活并不是他的兴趣所在。 “我喜欢帮助年轻的监督…

cesium for unity 打包webgl失败,提示不支持

platform webgl is not supported with HDRP use the Vulkan graphics AR instead.

Linux-PXE批量安装

一、部署 PXE 远程安装服务 在大规模的 Linux 应用环境中&#xff0c;如 Web 群集、分布式计算等&#xff0c;服务器往往并不配备光驱设备&#xff0c;在这种情况下&#xff0c;如何为数十乃至上百台服务器裸机快速安装系统呢&#xff1f;传统的 USB光驱、移动硬盘等安装方法显…

双向滑动选择器

插件地址:https://ext.dcloud.net.cn/plugin?id3940 注意: 当改变值是,让滑块自动滑动需要调用: this.$refs.powerSlider.updateValue(that.tempPowerValue[0], that.tempPowerValue[1], false); <view style"width: 90%;margin: 15px"><cj-slider ref…

CAS Apereo 5.3.16 实现单点登录

1.CAS部署 服务端下载地址&#xff1a;cas5.3 1.下载好打开后&#xff0c;复制target/cas/WEB-INF/classes/META-INF/spring.factories target/cas/WEB-INF/classes/services下的Apereo-10000002.json和HTTPSandIMAPS-10000001.json target/cas/WEB-INF/classes下的applicati…

挑战Midjourney,融合近百个SD大模型的通用模型AlbedoBase XL

在SDXL的通用模型中&#xff0c;DreamShaperXL和juggernautXL这2款大模型一直都深受广大AI绘画者的喜爱&#xff0c;不可否认&#xff0c;这2款通用模型在很多方面表现都相当出色。 今天再给大家介绍一款基于SDXL的通用大模型&#xff1a;AlbedoBase XL&#xff0c;作者的目标…