c++ 用海康VideoSdk 最新版连接远程摄像头的代码
时间: 2024-03-04 16:48:01 浏览: 31
使用最新版海康VideoSdk连接远程摄像头的C++代码如下:
```
#include "stdafx.h"
#include "HCNetSDK.h"
#include "PlayCtrl.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_s(login_info.sDeviceAddress, device_info.ip);
login_info.wPort = device_info.port;
strcpy_s(login_info.sUserName, device_info.username);
strcpy_s(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;
}
// 开始预览
LPNET_DVR_PREVIEWINFO lpPreviewInfo = new NET_DVR_PREVIEWINFO; // 预览参数
lpPreviewInfo->hPlayWnd = NULL; // 不需要播放窗口
lpPreviewInfo->lChannel = 1; // 预览通道号
lpPreviewInfo->dwStreamType = 0; // 主码流
lpPreviewInfo->dwLinkMode = 0; // TCP方式
lpPreviewInfo->bBlocked = true; // 阻塞取流
lpPreviewInfo->dwDisplayBufNum = 1; // 显示缓冲区个数
lpPreviewInfo->byProtoType = 0; // 私有协议
lpPreviewInfo->byPreviewMode = 0; // 预览模式
lpPreviewInfo->byReserve = new BYTE[118]; // 保留字段
LPNET_DVR_PREVIEWINFO lpPreviewInfoArr[1] = { lpPreviewInfo }; // 预览参数数组
LONG preview_handle = NET_DVR_RealPlay_V40(user_id, lpPreviewInfoArr, 1, 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`和`PlayCtrl.h`头文件。此外,最新版SDK使用`NET_DVR_RealPlay_V40`函数进行预览,需要传入预览参数数组。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)