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();