vs2019 QT二次开发大华相机sdk代码
时间: 2023-07-03 08:31:35 浏览: 387
以下是一个简单的示例代码,演示了如何使用大华相机SDK在VS2019和QT中进行开发:
```cpp
#include "stdafx.h"
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <iostream>
#include "dhnetsdk.h"
#include "dhconfigsdk.h"
#include "dhplay.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 初始化SDK
NETSDK_Init();
// 登录设备
NET_DEVICEINFO_Ex stDevInfo = { 0 };
int nLoginID = NET_DVR_Login_V40("192.168.1.100", 8000, "admin", "password", &stDevInfo);
if (nLoginID < 0)
{
std::cout << "登录设备失败!" << std::endl;
return;
}
// 获取视频通道号
int nChannel = 0;
NET_DVR_DEVICEINFO_V30 stDeviceInfo = { 0 };
if (!NET_DVR_GetDVRConfig(nLoginID, NET_DVR_GET_DEVICECFG_V30, 0, &stDeviceInfo, sizeof(stDeviceInfo), NULL))
{
std::cout << "获取设备信息失败!" << std::endl;
return;
}
nChannel = stDeviceInfo.byChanNum;
// 开始预览
NET_DVR_PREVIEWINFO struPlayInfo = { 0 };
struPlayInfo.hPlayWnd = (HWND)ui->label->winId();
struPlayInfo.lChannel = nChannel;
struPlayInfo.dwStreamType = 0;
struPlayInfo.dwLinkMode = 0;
if (!NET_DVR_RealPlay_V40(nLoginID, &struPlayInfo, NULL, NULL))
{
std::cout << "预览失败!" << std::endl;
return;
}
}
MainWindow::~MainWindow()
{
// 停止预览
NET_DVR_StopRealPlay(nLoginID);
// 注销登录
NET_DVR_Logout(nLoginID);
// 释放SDK资源
NETSDK_Cleanup();
delete ui;
}
```
首先,在QT项目中添加头文件和库文件,然后在MainWindow类的构造函数中进行SDK的初始化、设备登录、获取视频通道号和开始预览等操作。在开始预览时,需要将预览窗口的句柄传递给NET_DVR_PREVIEWINFO结构体中的hPlayWnd字段,这里使用了QT的QLabel作为预览窗口。在MainWindow类的析构函数中,停止预览、注销登录和释放SDK资源。
当然,这只是一个简单的示例代码,实际开发中需要根据具体需求进行修改和完善。