当前位置: 首页 > news >正文

视频监控相关笔记

一、QT 之 QTreeWidget 树形控件

Qt编程指南,Qt新手教程,Qt Programming Guide

一个树形结构的节点中的图表文本 、附带数据的添加:

QTreeWidgetItem* TourTreeWnd::InsertNode(NetNodeInfo node, QTreeWidgetItem* parent_item)  
{  // 创建一个QVariant对象,用于存储NetNodeInfo类型的node  QVariant var;  var.setValue(node);  // 初始化一个指向QTreeWidgetItem的指针,用于存储新创建的节点  QTreeWidgetItem* Item = NULL;  // 检查parent_item是否为NULL,如果是,则表示要插入的节点是顶级节点  if (parent_item == NULL) {  // 为顶级节点创建一个新的QTreeWidgetItem对象  Item = new QTreeWidgetItem(m_tree.get());  // 设置新节点的第一个列的文本为node的Name属性  Item->setText(0, (QString)node.Name);  // 设置新节点的第一个列的工具提示与文本相同  Item->setToolTip(0, Item->text(0));  // 将新节点作为顶级节点添加到树形控件中  m_tree->addTopLevelItem(Item);  // 根据node的类型设置图标  // 如果节点类型是NodeType_TOURTASK,则使用特定类型的图标  if (node.Type == NodeType::NodeType_TOURTASK) {  Item->setIcon(0, QIcon(GetIconByNodetype(node.Type)));  }  // 注意:这里没有处理非NodeType_TOURTASK类型顶级节点的图标设置,可能是个遗漏  // 将QVariant对象var作为用户自定义数据存储在节点的第一个列上  Item->setData(0, Qt::UserRole, var);  // 设置节点第一个列的大小提示为30x30  Item->setSizeHint(0, QSize(30, 30));  }  // 如果parent_item不为NULL,则表示要插入的节点是子节点  else {  // 为子节点创建一个新的QTreeWidgetItem对象,并指定parent_item为其父节点  Item = new QTreeWidgetItem(parent_item);  // 设置子节点的大小提示为30x30  Item->setSizeHint(0, QSize(30, 30));  // 设置子节点的第一个列的文本为node的Name属性  Item->setText(0, (QString)node.Name);  // 设置子节点的第一个列的工具提示与文本相同  Item->setToolTip(0, Item->text(0));  // 根据node的类型或设备状态设置图标  // 如果节点类型是NodeType_DEVICE,则根据设备主类型、子类型和状态获取图标  if (node.Type == NodeType::NodeType_DEVICE) {  Item->setIcon(0, QIcon(GetIconByDevStatus(node.DevMainType, node.DevSubType, node.Status)));  }  // 如果不是NodeType_DEVICE类型,则根据节点类型获取图标  else {  Item->setIcon(0, QIcon(GetIconByNodetype(node.Type)));  }  // 将QVariant对象var作为用户自定义数据存储在节点的第一个列上  Item->setData(0, Qt::UserRole, var);  }  // 显示树形控件(通常不是必需的,因为可能在其他地方已经设置为可见)  m_tree->show();  // 展开树形控件中的所有节点,以便新插入的节点可见  m_tree->expandAll();  // 返回新创建的节点指针,以便调用者可以使用它  return Item;  
}

其中注意以下几点:

 

 

二、视频播放

1. 主辅码流区别

2.  RTSP

3.  SDK的调用案例:

#pragma once#include <memory>
#ifdef _WINDOWS
#include <Windows.h>
#ifdef  LIBRTSPCLINET_SDK_EXPORTS
#define LIBRTSPCLINET_API __declspec(dllexport)
#else
#define LIBRTSPCLINET_API __declspec(dllimport)
#endif
#else  
#define LIBRTSPCLINET_API
#endif#include "Common.h"using namespace std;class LIBRTSPCLINET_API LibRtspClientManager
{
public:static LibRtspClientManager& getInstance() {static LibRtspClientManager instance;return instance;}/* @ 初始化SDK:@ 参数:onLibRtspClientDateCB 数据回调函数地址onLibRtspClientMsgCB  消息回调函数地址@ 返回: bool*/bool Init();/* @ 反初始化SDK:@ 参数:@ 返回: void*/void UnInit();/* @ 创建RTSP Client:@ 参数:std::string url : rtsp urlTransProtocol trans_protocol : 0-udp, 1-tcpint timeout : 超时时间,单位秒@ 返回: int32_t rtsp session id*/uint32_t CreateRtspClient(std::string url,std::string username, std::string password,TransProtocol trans_protocol, RtspCallBack* callback, int timeout);bool ReleaseRtspClient(uint32_t session_id);/* @ 连接服务器* @ 异步通知,rtsp连接情况在onLibRtspClientMsgCB反馈*/bool Connect(uint32_t session_id);bool Play(uint32_t session_id, std::string params_json);bool Control(uint32_t session_id, std::string params_json);bool Pause(uint32_t session_id);// 恢复播放bool Resume(uint32_t session_id);// 从指定位置恢复播放bool Resume(uint32_t session_id, float npt);bool Stop(uint32_t session_id);void WaitForStop(uint32_t session_id);
private:LibRtspClientManager();virtual ~LibRtspClientManager();class LibRtspClientPriv;std::shared_ptr<LibRtspClientPriv> m_priv;
};

4. 


http://www.mrgr.cn/news/34952.html

相关文章:

  • macOS 设置固定IP
  • 数字IC实践项目(10)—基于System Verilog的DDR4 Model/Tb 及基础Verification IP的设计与验证(付费项目)
  • 安科瑞工业绝缘监测装置:保障煤矿井下6kV供电系统安全运行的关键应用——安科瑞 丁佳雯
  • Java面向对象编程进阶之包装类
  • Kafka参数了解
  • 数据结构中数据有序性/ 单调性 ——二分查找
  • 企业有了ELT就不需要ETL了?别被忽悠了
  • k8s中,pod生命周期,初始化容器,容器探针,事件处理函数,理解其设计思路及作用
  • SpringBoot | Maven快速上手
  • Webpack优化问题
  • 两数之和、三数之和、四数之和
  • 开源 AI 智能名片与 S2B2C 商城小程序:嫁接权威实现信任与增长
  • Spring MVC 拦截器总结
  • 解决银河麒麟操作系统在单用户模式下根分区只读的问题
  • flink 的 Barrier 对齐 的优劣详解:
  • 【C++掌中宝】深入理解函数重载:概念、规则与应用
  • 《现代畜牧兽医》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • Spring Boot集成LiteFlow使用详解
  • Jetpack——Room
  • 水政渔政船、轮渡邮轮及作业船舶监控:视频监控在水利水资源保护中的应用
  • 程序员下班以后做什么副业合适?_35技术人员副业
  • async await执行顺序
  • 中文文本词性分析-技术实现-python
  • 旷视科技ShuffleNetV1代码分析[pytorch版]
  • Apache Cordova和PhoneGap
  • 关于考试监听切屏的三种方式