Qt通过海康SDK实时预览

1.获取海康SDK文件
2.海康SDK文件使用说明
3.实时预览示例

一、获取海康SDK文件

下载地址:SDK下载
在这里插入图片描述
点击“立即下载”,登录,下载
在这里插入图片描述
解压后文件如下
在这里插入图片描述

二、海康SDK文件使用说明

头文件放到项目头文件中
库文件中的lib放到项目库文件中
库文件中的dll放到项目程序程序运行目录
库文件中的HCNetSDKCom文件夹也要完整的放到项目程序运行目录

三、实时预览示例

demo.h

#include "HCNetSDK.h"
#include "Windows.h"

demo.cpp

1.初始化

if(NET_DVR_Init())
   ui->TB_output->append("初始化SDK成功");

2.释放SDK资源

if(NET_DVR_Cleanup())
   ui->TB_output->append("释放SDK资源成功");

3.登录

//默认ip:192.168.45.30 user:admin pwd:admin123
QString strIP = "192.168.45.30";    //ip随便写的
QString strUser = "admin";
QString strPwd = "admin123";

NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

QByteArray baIp =strIP.toLatin1();
char* ip = baIp.data();
QByteArray baUser = strUser.toLatin1();
char* userName = baUser.data();
QByteArray baPass = strPwd.toLatin1();
char* passWord = baPass.data();

struLoginInfo.bUseAsynLogin = false;
struLoginInfo.wPort = 8000;
strcpy(struLoginInfo.sDeviceAddress,ip);
strcpy(struLoginInfo.sUserName,userName);
strcpy(struLoginInfo.sPassword,passWord);

struLoginInfo.byProxyType = 0;

m_loginId = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
m_iIpcStartChan = struDeviceInfoV40.struDeviceV30.byStartChan;
m_startChannle = struDeviceInfoV40.struDeviceV30.byStartDChan;
m_wDevType = struDeviceInfoV40.struDeviceV30.wDevType;

if(m_loginId == -1 || m_loginId < 0)
{
    ui->TB_output->append(QString("设备登陆失败,错误码:%1").arg(NET_DVR_GetLastError()));
}else
    ui->TB_output->append(QString("登陆成功 IP:%1, 用户名:%2, 密码:%3, 登录句柄:%4").arg(strIP).arg(userName).arg(passWord).arg(m_loginId));

4.注销登录

if(m_loginId == -1 || m_loginId < 0)
{
    ui->TB_output->append(QString("设备已经退出登录!%1").arg(m_loginId));
}
if(!NET_DVR_Logout(m_loginId))
{
    ui->TB_output->append(QString("设备退出登录失败!错误码:%1").arg(NET_DVR_GetLastError()));
}
else
{
    m_loginId = -1;
    ui->TB_output->append(QString("设备已退出登录!%1").arg(m_loginId));
}

5.开始预览

HWND hWnd = reinterpret_cast<HWND>(ui->L_play->winId());
int iChannel = 0;       //预览通道号

int iStreamType = 0;    //主码流

NET_DVR_PREVIEWINFO struPlayInfo = {0};
struPlayInfo.lChannel = iChannel + m_iIpcStartChan;
struPlayInfo.hPlayWnd = hWnd;
struPlayInfo.dwLinkMode = 0;
struPlayInfo.dwStreamType = iStreamType;
struPlayInfo.byPreviewMode = 0;
m_lPlayHandle = NET_DVR_RealPlay_V40(m_loginId, &struPlayInfo, NULL, NULL);

if(-1 == m_lPlayHandle)
{
    ui->TB_output->append(QString("开启预览失败 句柄:%1, 错误码:%2").arg(m_lPlayHandle).arg(NET_DVR_GetLastError()));
}
else
{
    ui->TB_output->append(QString("开始预览 句柄:%1").arg(m_lPlayHandle));
}

6.停止预览

if(m_lPlayHandle == -1)
{
    ui->TB_output->append(QString("已经停止预览!"));
}
if(!NET_DVR_StopRealPlay(m_lPlayHandle))
{
    ui->TB_output->append(QString("停止预览失败 句柄:%1, 错误码:%2").arg(m_lPlayHandle).arg(NET_DVR_GetLastError()));
}
else
{
    m_lPlayHandle = -1;
    ui->TB_output->append(QString("停止预览成功 句柄:%1").arg(m_lPlayHandle));
}
this->update();
  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值