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

QT Quick QML 添加海康威视SDK云台控制模块

文章目录

  • 1. 配置
    • 海康威视 SDK 下载
    • SDK文件移植
    • 工程文件添加
  • 2. 函数调用
    • 流程
    • 接口
    • 参考代码
  • 3. 代码
    • 后端核心代码
    • 前端核心代码


GitHub 源码:     QmlLearningPro选择子工程 HkwsDemo.pro (暂未上传)

QML 其它文章请点击这里:     QT QUICK QML 学习笔记


● 运行效果:

请添加图片描述
有延时是因为未对视频进行处理

1. 配置

海康威视 SDK 下载

https://www.hikvision.com/cn/support/Downloads/

在这里插入图片描述

SDK文件移植

将 SDK 中的所有库文件(.lib、.dll)与头文件(*.h)复制当前工程目录下,形式不限。
在这里插入图片描述

工程文件添加

在 HkwsDemo.pro 工程文件中分别加入以下部分
在这里插入图片描述

#添加所有lib静态库
LIBS += $$PWD/lib/*.lib#添加所有头文件
INCLUDEPATH+=$$PWD/include#生成的二进制文件生成到bin目录与.dll 文件放一起,
#可执行文件(.exe)先查找所在的目录的 .dll 文件
DESTDIR = $$PWD/bin

注意 MSVC 用的也是32 位的,可以添加

在这里插入图片描述

ANDROID_EXTRA_LIBS +=  xxxxxx

2. 函数调用

流程

在这里插入图片描述

接口

在这里插入图片描述

参考代码

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

3. 代码

后端核心代码

与参考代码类似,按照上述程序流程图来即可:

登录:

bool QObjectQml::initSDK()
{bool isok = NET_DVR_Init();if(isok == false){qDebug()<< "NET_DVR_Init error;error number is " <<NET_DVR_GetLastError();return isok;}//设置连接时间与重连时间NET_DVR_SetConnectTime(2000, 1);NET_DVR_SetReconnect(10000, true);return isok;
}void QObjectQml::OnClickedLogin()
{initSDK();NET_DVR_DEVICEINFO_V30 DeviceInfoTmp;QString AddressID="192.168.xxx.xx";QString NameID="admin";QString passwordID="xxxxxx";//"hk123456";userID=NET_DVR_Login_V30(AddressID.toUtf8().data(),8000,NameID.toUtf8().data(),passwordID.toUtf8().data(),&DeviceInfoTmp);if(userID<0){qDebug() << "NET_DVR_Login_V30 error;" << "error number is " << NET_DVR_GetLastError();return;}else{qDebug()<<"Login Success,userID:" ;}qDebug()<<"Login Success,userID:" << userID<<endl;
}

注销:

void QObjectQml::OnClickedLogout()
{if(userID!=-1){if(NET_DVR_Logout(userID)==false){qDebug() << "NET_DVR_Logout error;" << "error number is " << NET_DVR_GetLastError();return;}userID=-1;qDebug() <<"Logout Success!"<<endl;}
}

方向控制:

//上:按下
void QObjectQml::on_btn_u_pressed()
{qDebug()<<"on_btn_u_pressed";int camCh=1;int camSpeed=3;NET_DVR_PTZControlWithSpeed_Other(userID,(LONG)camCh,TILT_UP,0,camSpeed);
}//上:松手
void QObjectQml::on_btn_u_released()
{qDebug()<<"on_btn_u_released";int camCh=1;int camSpeed=3;NET_DVR_PTZControlWithSpeed_Other(userID,(LONG)camCh,TILT_UP,1,camSpeed);
}
...

大小控制:

//下:按下
void QObjectQml::on_btn_min_pressed()
{int camCh=1;int camSpeed=3;NET_DVR_PTZControlWithSpeed_Other(userID,(LONG)camCh,ZOOM_OUT,0,camSpeed);
}//下:松手
void QObjectQml::on_btn_min_released()
{int camCh=1;int camSpeed=3;NET_DVR_PTZControlWithSpeed_Other(userID,(LONG)camCh,ZOOM_IN,ZOOM_OUT,camSpeed);
}...

前端核心代码

视频播放:

简易的视频播放代码,还是需要另外调用SDK,或者使用FFmpeg等方案

    QObjectQml {id: myObjectdeviceId: "12345"Component.onCompleted: console.log(deviceId)}MediaPlayer {id: playerautoPlay: truesource:   "rtsp://admin:123456789@192.168.85.60:8554"                      //          "rtsp://admin:njzh123456789@192.168.144.64:554/h264/ch1/main/av_stream"}

登录:

    Button{x:600y:10width: 80height: 30text: qsTr("登录")onPressed:   myObject.OnClickedLogin()}

控制:

    Button{x:10y:10width: 80height: 30text: qsTr("上")onPressed:   myObject.on_btn_u_pressed()onReleased:  myObject.on_btn_u_released()}

具体细节看代码


GitHub 源码:     QmlLearningPro选择子工程 HkwsDemo.pro

QML 其它文章请点击这里:     QT QUICK QML 学习笔记


相关文章:

  • 【ShuQiHere】《机器学习的进化史『上』:从数学模型到智能算法的百年征程》
  • 【Git】常用命令大全(带注释)
  • GPT-4.0 新手使用教程(保姆级入门)
  • OpenCV小练习:身份证号码识别
  • linux-----内核(Kernel)与文件系统(File System)
  • 排序---
  • 04:创建PADS Logic软件逻辑库
  • 乾元通渠道商中标湖南省煤业集团公司安全生产预防和应急救援能力建设装备配备采购项目
  • 快速安全部署 Tomcat
  • 电路笔记(PCB): kicad freerouting自动布线
  • UVM仿真的启动(二)—— uvm_phase::m_run_phase()
  • 微信小程序利用canva进行大图片压缩
  • 【人工智能】AI算法系统设计与算法建模的详细阐述
  • leetcode 1957 删除字符使字符串变好
  • 【ubuntu20.4 常用经验分享】
  • ----------
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 《Java编程思想》读书笔记-对象导论
  • 【React系列】如何构建React应用程序
  • Akka系列(七):Actor持久化之Akka persistence
  • CEF与代理
  • Golang-长连接-状态推送
  • Java,console输出实时的转向GUI textbox
  • javascript从右向左截取指定位数字符的3种方法
  • Javascript设计模式学习之Observer(观察者)模式
  • jdbc就是这么简单
  • js中forEach回调同异步问题
  • PHP 7 修改了什么呢 -- 2
  • underscore源码剖析之整体架构
  • vue-cli在webpack的配置文件探究
  • vue-router的history模式发布配置
  • 爱情 北京女病人
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 每天10道Java面试题,跟我走,offer有!
  • 那些被忽略的 JavaScript 数组方法细节
  • 新书推荐|Windows黑客编程技术详解
  • 一起参Ember.js讨论、问答社区。
  • 移动端唤起键盘时取消position:fixed定位
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​【经验分享】微机原理、指令判断、判断指令是否正确判断指令是否正确​
  • ​探讨元宇宙和VR虚拟现实之间的区别​
  • # 数论-逆元
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (差分)胡桃爱原石
  • (二)WCF的Binding模型
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (南京观海微电子)——COF介绍
  • (三十五)大数据实战——Superset可视化平台搭建