# HaiKangVisionTool **Repository Path**: qiugq/hai-kang-vision-tool ## Basic Information - **Project Name**: HaiKangVisionTool - **Description**: 通过HTTP进行控制、交互,实现摄像头直接ip登录以及取流、转码前端通过websocket直接预览的功能。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2025-04-23 - **Last Updated**: 2025-04-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 海康IVS摄像头插件(java版) 通过HTTP进行控制、交互,实现摄像头直接ip登录以及取流、转码前端通过websocket直接预览的功能。 ## 后端逻辑流程 ①:java加载SDK包(dll)实现sdk加载和调用 ②:调用sdk的NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo)接口实现登录。 ③:调用sdk的NET_DVR_RealPlay_V40(userID, strClientInfo, fRealDataCallBack , null)接口实现取流。 ④:在我们自定义的fRealDataCallBack回调函数中对取流数据进行数据截取以及转码操作,并将数据包进行存贮。 ⑤:创建websocket类监听前端连接,区分摄像头后通过websocket进行实时推流。socket地址为'/wstest/{lUserID}' 其中lUserID是登录并预览成功后返回的lUserID! ## 前端逻辑流程 ①:准备好摄像头参数:ip、端口、预览通道、用户名、密码,请求后端接口‘/playvision/login’实现登录,登陆成功后端会返回loginStatus(登录状态:0-失败1-成功)、lUserID(登陆摄像头的id) ②:请求预览接口'/playvision/playView',将登录后返回的数据直接请求过来即可。请求成功后会返回plsyStatus(预览状态:0-失败1-成功)、lPlayID(预览成功的通道句柄id) ③:预览成功后我们调用wfs.js插件进行实时预览。 ```csharp var wfs = new Wfs(); wfs.attachMedia(video1, 'ch1'); //注:wftjs内部onMediaAttached这里会创建websocket所以连接地址按照后端提供的websocket连接地址建立websocket! ``` ④:注意摄像头参数配置需要配置编码为H.264 ![](img/81e82d626cc0a8fd3690ed09d49235a.jpg) ## 接口介绍 ### 登录并预览 通过`/playvision/loginAndPlayView`发起Post请求登陆摄像头并开启预览: ```json { "userName": 0, //用户名 "password": 1, //密码 "ip": "", //摄像头所在ip "prot": 80, //摄像头所在端口 "lDChannel": 1 //使用预览通道 } ``` ### 退出预览&登录 通过`/playvision/logoutPlayView?lUserID=xx&lPlayID=xx`发起get请求退出摄像头的预览和登录 ### 批量登录(可用做判断摄像头是否在线) 通过`/playvision/login`发起Post请求登陆摄像头 ```json [{ "userName": 0, //用户名 "password": 1, //密码 "ip": "", //摄像头所在ip "prot": 80, //摄像头所在端口 "lDChannel": 1 //使用预览通道 }, { "userName": 0, //用户名 "password": 1, //密码 "ip": "", //摄像头所在ip "prot": 80, //摄像头所在端口 "lDChannel": 1 //使用预览通道 } ] ``` ### 开启某个摄像头预览 通过`/playvision/playView`发起Post请求登陆摄像头 ```json { "lUserID":1, //登录接口返回的登录用户id(必填) "userName": 0, //用户名 "password": 1, //密码 "ip": "", //摄像头所在ip "prot": 80, //摄像头所在端口 "lDChannel": 1 //使用预览通道 } ``` ### 只关闭某个摄像头预览,但不退出登录 通过`/playvision/logoutPlayViewOnly`发起Post请求登陆摄像头 ```json { "lUserID":1,//登录接口返回的登录用户id(必填) "lPlayID":1,//预览接口返回的预览句柄id(必填) "userName": 0, //用户名 "password": 1, //密码 "ip": "", //摄像头所在ip "prot": 80, //摄像头所在端口 "lDChannel": 1 //使用预览通道 } ``` [文档地址](\\host\项目\10项目管理\02智能工厂\06********\2022年增补\01监控对接\网络sdk开发\设备网络SDK使用手册.chm)在HOST上面,公司内网可以直接点开查看。 ## 配置文件 无:(注意事项:启动时需将lib文件夹放在jar包同级目录下) ## 打包文件 [打包好的文件放在:](\\host\项目\10项目管理\02智能工厂\06*******\2022年增补\01监控对接\网络sdk开发\打包文件)\\host\项目\10项目管理\02智能工厂\06******\2022年增补\01监控对接\网络sdk开发\打包文件 ## TODO 代码封装、命名等比较仓促,没有很好很认真的封装,很多类、结构都只是开发探索时进行的编码。 ## 常见错误定义: 播放黑屏等请参见:https://blog.csdn.net/lanye233/article/details/102739842 调节wfs的一些播放参数试试 ```csharp EXCEPTION_EXCHANGE 0x8000 用户交互时异常(注册心跳超时,心跳间隔为2分钟) EXCEPTION_AUDIOEXCHANGE 0x8001 语音对讲异常 EXCEPTION_ALARM 0x8002 报警异常 EXCEPTION_PREVIEW 0x8003 网络预览异常 EXCEPTION_SERIAL 0x8004 透明通道异常 EXCEPTION_RECONNECT 0x8005 预览时重连 EXCEPTION_ALARMRECONNECT 0x8006 报警时重连 EXCEPTION_SERIALRECONNECT 0x8007 透明通道重连 SERIAL_RECONNECTSUCCESS 0x8008 透明通道重连成功 EXCEPTION_PLAYBACK 0x8010 回放异常 EXCEPTION_DISKFMT 0x8011 硬盘格式化 EXCEPTION_PASSIVEDECODE 0x8012 被动解码异常 EXCEPTION_EMAILTEST 0x8013 邮件测试异常 EXCEPTION_BACKUP 0x8014 备份异常 PREVIEW_RECONNECTSUCCESS 0x8015 预览时重连成功 ALARM_RECONNECTSUCCESS 0x8016 报警时重连成功 RESUME_EXCHANGE 0x8017 用户交互恢复 NETWORK_FLOWTEST_EXCEPTION 0x8018 网络流量检测异常 EXCEPTION_PICPREVIEWRECONNECT 0x8019 图片预览重连 PICPREVIEW_RECONNECTSUCCESS 0x8020 图片预览重连成功 EXCEPTION_PICPREVIEW 0x8021 图片预览异常 EXCEPTION_MAX_ALARM_INFO 0x8022 报警信息缓存已达上限 EXCEPTION_LOST_ALARM 0x8023 报警丢失 EXCEPTION_PASSIVETRANSRECONNECT 0x8024 被动转码重连 PASSIVETRANS_RECONNECTSUCCESS 0x8025 被动转码重连成功 EXCEPTION_PASSIVETRANS 0x8026 被动转码异常 EXCEPTION_RELOGIN 0x8040 用户重登陆 RELOGIN_SUCCESS 0x8041 用户重登陆成功 EXCEPTION_PASSIVEDECODE_RECONNNECT 0x8042 被动解码重连 EXCEPTION_CLUSTER_CS_ARMFAILED 0x8043 集群报警异常 EXCEPTION_RELOGIN_FAILED 0x8044 重登陆失败,停止重登陆 EXCEPTION_PREVIEW_RECONNECT_CLOSED 0x8045 关闭预览重连功能 EXCEPTION_ALARM_RECONNECT_CLOSED 0x8046 关闭报警重连功能 EXCEPTION_SERIAL_RECONNECT_CLOSED 0x8047 关闭透明通道重连功能 EXCEPTION_PIC_RECONNECT_CLOSED 0x8048 关闭回显重连功能 EXCEPTION_PASSIVE_DECODE_RECONNECT_CLOSED 0x8049 关闭被动解码重连功能 EXCEPTION_PASSIVE_TRANS_RECONNECT_CLOSED 0x804a 关闭被动转码重连功能 ```