# HIKVISION DEVELOP **Repository Path**: fangexuxiehuihuang/HIKVISION_DEVELOP ## Basic Information - **Project Name**: HIKVISION DEVELOP - **Description**: A project for camera development based on HIKVISION SDK. - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 5 - **Created**: 2023-03-09 - **Last Updated**: 2025-09-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: HIKDevice, Python, Cpp ## README # HIKVISION DEVELOP 开始时间:2023-03-11 更新时间:2023-09-17 ![image](image.jpg) ## 介绍 本项目基于海康威视的智能安防摄像机及其SDK进行二次开发 - 项目成员 | 序号 | 成员 | | :--: | :----------: | | 1 | A-孔俊 | | 2 | 22-博-李强 | | 3 | 22-研-李一帆 | | 4 | 22-研-柳境昌 | - 设备列表 | 序号 | 设备型号 | | :--: | :----------------------------------------------------------: | | 1 | [DS-2CD3T86FWDA4-LS(基础款)](https://www.hikvision.com/cn/products/Front-End-Product/Fixed-Camera/Distributed-Series/ds-2cd3t86fwda4-ls/) | - 主要文件夹/文件说明 | 文件路径 | 说明 | | :-------------------------: | :----------------------------------------------------------: | | ./Demo/ | 海康提供的基于C++和Python的示例程序,有关Visual Studio下运行C++的问题解决可以参考此篇[博客](https://blog.csdn.net/liuyonghong159632/article/details/107968376/) | | ./设备网络SDK使用手册.chm | 设备核心开发文档,映射到HCNetSDK.dll | | ./播放库编程指南.chm | 设备播放库开发文档,映射到PlayCtrl.dll | | ./source/ | 项目文件夹 | | ./source/lib/ | 设备依赖的SDK文件夹 | | ./source/HCNetSDK.py | 通过ctypes进行c++和python数据结构、函数转换的定义脚本,映射到HCNetSDK.dll | | ./source/PlayCtrl.py | 通过ctypes进行c++和python数据结构、函数转换的定义脚本,映射到PlayCtrl.dll | | ./source/HikVisionDevice.py | HIKVISION设备的控制类,包含了对设备进行控制、全流程的功能(核心文件) | | ./source/TkinterApp.py | 基于Tkinter的客户端App,用于对设备的控制接口进行测试(入口文件) | ## 接口 - HikVisionDevice.py 对`./source/HikVisionDevice.py`进行描述 ①全局参数 | 参数名 | 描述 | | :-----------: | :----------------------------------------: | | DEV_IP | 设备连接PC后的ip地址(默认为192.168.0.64) | | DEV_PORT | 设备连接PC后的端口号(8000) | | DEV_USER_NAME | 设备用户名(admin) | | DEV_PASSWORD | 设备密码(liqiang0307) | 注:后续会以配置文件的方式替代嵌入式的明文方式 ②HikVisionDevice类的私有成员变量 | 变量名 | 描述 | | :-----------------------: | :------------------------------------: | | __system | 系统类型,windows/linux | | __HCNetSDK | HCNetSDK对象 | | __PlayCtrl | PlayCtrl SDK对象 | | __PlayCtrl_Port | PlayCtrl播放端口 | | __lRealPlayHandle | PlayCtrl视频预览的播放句柄 | | __CRealDataCallBack_V30 | PlayCtrl视频预览时视频流获取函数的句柄 | | __CDecodeCallbackFunction | PlayCtrl视频预览时视频流解码函数的句柄 | | __canvas | PlayCtrl视频预览时视频流显示的画布句柄 | | __lVoiceHandle | HCNetSDK语音对讲时的语音句柄 | | __prePoints | 预置点 | ②HikVisionDevice类的公有成员变量 ④HikVisionDevice类的私有成员函数 | 成员名 | 参数 | 描述 | | :----------------------: | :----------------------------------------------------------: | :----------------------------: | | \__init__() | | 类初始化函数 | | __HCNetSDKInit() | | HCNetSDK.dll相关依赖初始化函数 | | __playCtrlInit() | | PlayCtrl.dll相关依赖初始化函数 | | __deviceLogin | | 设备登录函数 | | __RealDataCallBack_V30 | lPlayHandle:播放句柄
dwDataType:数据类型
pBuffer:数据流
dwBufSize:数据流大小
pUser:用户数据 | 视频预览时视频流的回调函数 | | __decodeCallbackFunction | lRealHandle:播放端口
pBuf:解码前的数据流
nSize:解码前的数据流大小
pFrameInfo:解码前的帧信息
nUser:用户数据
nReserved2 | 视频流回调后解码时的回调函数 | | __fVoiceDataCallBack | lRealHandle:音频播放句柄
dwDataType:音频流格式
pBuffer:音频流数据
dwBufSize:音频流数据大小
pUser:用户数据
| 音频流回调函数 | | __openVoiceStream | | 获取PC音频流 | ⑤HikVisionDevice类的公有成员函数 | 成员名 | 参数 | 描述 | | :----------------------: | :----------------------------------------------------------: | :----------------------------------------------------------: | | setShowCanvas | canvas:画布 | 设置视频流显示的画布 | | deviceExit | | 设备退出登录 | | openPreview | | 打开预览 | | closePreview | | 关闭预览 | | pausePreview | | 暂停预览 | | restartPreview | | 恢复预览 | | slowPlay | | 慢速播放:每次调用将使当前播放速度慢一倍;最多调用4次 | | fastPlay | | 快速播放:每次调用将使当前播放速度加快一倍,最多调用6次 | | normalPlay | | 恢复正常播放 | | setImageConfig | nBrightness:亮度
nContrast:对比度
nSaturation:饱和度
nHue:色调
默认值均为64,范围0-128 | 设置图像参数 | | setImageSharpen | nLevel:锐化级别 1-6 | 设置图像锐化,0不做锐化,1低级,6高级,默认不做锐化 | | setRotateAngle | dwType,[-1,2] | 设置图像旋转模式,-1不旋转,0向左旋转90°,1向右旋转90°,2旋转180 | | getFlowInfo | | 获取视频流信息 | | capturePicture | | 截屏 | | screenRecord | | 录屏 | | stopScreenRecord | | 停止录屏 | | startVoiceCom | | 语音对讲(未完成) | | stopVoiceCom | | 停止语音对讲 | | openLightBattery | speed:云台速度[1-,7] | 接通灯光电源 | | closeLightBattery | speed:云台速度[1-,7] | 关闭灯光电源 | | openWindshieldWiper | speed:云台速度[1-,7] | 接通雨刷开关 | | closeWindshieldWiper | speed:云台速度[1-,7] | 关闭雨刷开关 | | openFan | speed:云台速度[1-,7] | 接通风扇开关 | | closeFan | speed:云台速度[1-,7] | 关闭风扇开关 | | openHeater | speed:云台速度[1-,7] | 接通通加热器开关 | | closeHeater | speed:云台速度[1-,7] | 关闭通加热器开关 | | addFocalDistance | speed:云台速度[1-,7] | 焦距变大(倍率变大) | | reduceFocalDistance | speed:云台速度[1-,7] | 焦距变小(倍率变小) | | focusHead | speed:云台速度[1-,7] | 焦点前调 | | focusBack | speed:云台速度[1-,7] | 焦点后调 | | focusAuxiliary | | 辅助聚焦 | | addDiaphragm | speed:云台速度[1-,7] | 光圈扩大 | | reduceDiaphragm | speed:云台速度[1-,7] | 光圈缩小 | | panUp | speed:云台速度[1-,7] | 云台上仰 | | panDown | speed:云台速度[1-,7] | 云台下俯 | | panLeft | speed:云台速度[1-,7] | 云台左转 | | panRight | speed:云台速度[1-,7] | 云台右转 | | panAutoScan | speed:云台速度[1-,7] | 云台自动左右扫描 | | panStop | speed:云台速度[1-,7] | 云台停止 | | panReset | | 恢复镜头电机默认位置 | | addPrePoint | pointName:预置点名称,注意名字唯一 | 设置预置点 | | getPrePoints | | 获取预置点 | | moveToPrePoint | pointName:预置点名称 | 设置预置点 | | removePrePoint | pointName:预置点名称 | 清除预置点 | | addCruise | cruiseName:巡航点名称,注意名字唯一 | 设置巡航路线 | | removeCruise | cruiseName:巡航点名称 | 删除巡航路线 | | getCruises | | 获取巡航路线 | | getCruisesByName | cruiseName:巡航点名称 | 通过巡航线名称获取巡航路线 | | putPrePointToCruise | cruiseName:巡航点名称
pointName:预置点名称 | 将预置点添加到巡航路线中 | | removePrePointFromCruise | cruiseName:巡航点名称
pointName:预置点名称 | 将预置点从巡航路线中删除 | | setCruiseWaitTime | waiteTime:等待时间最大[120,255]
cruiseName:巡航点名称
pointName:预置点名称 | 设置巡航点停顿时间 | | setCruiseSpeed | speed:巡航速度[1,40]
cruiseName:巡航点名称
pointName:预置点名称 | 设置巡航点停顿时间 | | startCruise | cruiseName:巡航点名称
pointName:预置点名称 | 开始巡航 | | finishCruise | cruiseName:巡航点名称
pointName:预置点名称 | 结束巡航 |