c++ 用海康VideoSdk 连接远程摄像头的代码
时间: 2024-03-04 14:48:01 浏览: 16
使用海康VideoSdk连接远程摄像头的C++代码如下:
```
#include "stdafx.h"
#include "HCNetSDK.h"
#include "PlayM4.h"
#include <iostream>
using namespace std;
// 设备登录信息结构体
typedef struct _DEVICE_INFO
{
char* ip; // 设备IP地址
int port; // 设备端口号
char* username; // 设备登录用户名
char* password; // 设备登录密码
} DEVICE_INFO;
int main()
{
// 初始化海康SDK
NET_DVR_Init();
// 登录设备
DEVICE_INFO device_info = { "192.168.1.100", 8000, "admin", "12345" }; // 替换为实际设备信息
NET_DVR_USER_LOGIN_INFO login_info = { 0 };
login_info.bUseAsynLogin = false; // 同步登录
strcpy(login_info.sDeviceAddress, device_info.ip);
login_info.wPort = device_info.port;
strcpy(login_info.sUserName, device_info.username);
strcpy(login_info.sPassword, device_info.password);
NET_DVR_DEVICEINFO_V40 device_info_v40 = { 0 };
LONG user_id = NET_DVR_Login_V40(&login_info, &device_info_v40);
if (user_id < 0)
{
cout << "登录设备失败,错误码:" << NET_DVR_GetLastError() << endl;
NET_DVR_Cleanup(); // 释放SDK资源
return -1;
}
// 开始预览
NET_DVR_PREVIEWINFO preview_info = { 0 };
preview_info.hPlayWnd = NULL; // 不需要播放窗口
preview_info.lChannel = 1; // 预览通道号
preview_info.dwStreamType = 0; // 主码流
preview_info.dwLinkMode = 0; // TCP方式
preview_info.bBlocked = true; // 阻塞取流
LONG preview_handle = NET_DVR_RealPlay_V40(user_id, &preview_info, NULL, NULL);
if (preview_handle < 0)
{
cout << "预览失败,错误码:" << NET_DVR_GetLastError() << endl;
NET_DVR_Logout(user_id); // 注销设备
NET_DVR_Cleanup(); // 释放SDK资源
return -1;
}
// 等待用户输入任意键停止预览
cout << "预览中,请按任意键停止..." << endl;
getchar();
// 停止预览
NET_DVR_StopRealPlay(preview_handle);
// 注销设备
NET_DVR_Logout(user_id);
// 释放SDK资源
NET_DVR_Cleanup();
return 0;
}
```
注意替换`DEVICE_INFO`结构体中的设备IP地址、端口号、登录用户名和密码。同时,需在工程中添加`HCNetSDK.lib`和`PlayCtrl.lib`两个库文件并包含`HCNetSDK.h`和`PlayM4.h`头文件。