news 2026/9/3 22:36:37

海康威视监控摄像头内网接入

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
海康威视监控摄像头内网接入

引入插件:

<script src="./jquery-1.7.1.min.js"></script> <script id="videonode" src="./webVideoCtrl.js"></script> <script src="./jsVideoPlugin-1.0.0.min.js"></script>

代码实现:

<template> <div class="monitoring"> <div class="worktop"> <div class="title">控制台</div> <el-collapse> <el-collapse-item title="画面分割" name="1"> <el-select v-model="windowType" placeholder="请选择" style="width: 100%;" @change="changeWindowType"> <el-option label="1×1" :value="1"/> <el-option label="2×2" :value="2"/> <el-option label="3×3" :value="3"/> <el-option label="4×4" :value="4"/> </el-select> </el-collapse-item> <el-collapse-item title="通道列表" name="2"> <div class="treeOption"> <el-tree :data="ChannelsList" node-key="id" default-expand-all :expand-on-click-node="false"> <span class="custom-tree-node" slot-scope="{ node, data }"> <span>{{ data.name }}</span> <span> <el-button type="text" size="mini" @click="() => clickNode(data)"> 预览 </el-button> </span> </span> </el-tree> </div> </el-collapse-item> </el-collapse> </div> <div id="divPlugin" class="plugin" /> </div> </template> <script> import to from 'await-to-js' import { getBasicDataPages } from '@/api/system/setting/basic-data' export default { data() { return { loading: false, ChannelsList: [], selectWindow: 0, // 当前选中的窗口 windowType: 1, // 画面分割 baseData: { szIP: '', // IP地址 szPort: '80', // HTTP端口号 sziPrototocol: 1, szUsername: '', // 用户名 szPassword: '' // 密码 } } }, async created() { // 获取基础数据 await this.getData() // 初始化插件 await this.init() }, methods: { async getData() { this.loading = true const [err, res] = await to(getBasicDataPages()) if (res && res.state.toLowerCase() === 'success') { this.loading = false res.data.data.forEach(element => { if (element.paramcode === '海康录像机密码') { this.baseData.szPassword = element.paramvalue } if (element.paramcode === '海康录像机登录账号') { this.baseData.szUsername = element.paramvalue } if (element.paramcode === '海康录像机ip') { this.baseData.szIP = element.paramvalue } }) } }, init() { this.$message({ type: 'warning', duration: 0, dangerouslyUseHTMLString: true, message: '<strong style="display: flex;align-items: center;">程序初始化中,请稍等<i class="el-icon-loading" style="margin-left: 10px;font-size: 20px;"></i></strong>' }) const that = this WebVideoCtrl.I_InitPlugin({ iWndowType: that.windowType, bWndFull: true, cbSelWnd: function (xmlDoc) { that.selectWindow = parseInt($(xmlDoc).find('SelectWnd').eq(0).text(), 10) }, cbInitPluginComplete: function () { WebVideoCtrl.I_InsertOBJECTPlugin('divPlugin').then(() => { WebVideoCtrl.I_CheckPluginVersion().then((bFlag) => { if (bFlag) { this.$message.closeAll() this.$message({ duration: 0, message: '检测到新的插件版本,双击开发包目录里的HCWebSDKPlugin.exe升级。' }) } else { // 登录设备 that.login() } }) }, () => { console.log('插件初始化失败') alert('插件初始化失败,请确认是否已安装插件。如未安装,双击开发包目录里的HCWebSDKPlugin.exe进行安装。') // this.$message.closeAll() // this.$message({ // duration: 0, // message: '插件初始化失败,请确认是否已安装插件。如未安装,双击开发包目录里的HCWebSDKPlugin.exe进行安装。', // type: 'error' // }) }) } }) }, changeWindowType() { // 停止播放 WebVideoCtrl.I_StopAllPlay() // 登录设备 WebVideoCtrl.I_Logout(this.baseData.szIP + '_' + this.baseData.szPort) // 销毁插件 WebVideoCtrl.I_DestroyPlugin() setTimeout(() => { console.log(this.windowType) this.init() }, 1000) }, login() { const that = this WebVideoCtrl.I_Login(that.baseData.szIP, that.baseData.sziPrototocol, that.baseData.szPort, that.baseData.szUsername, that.baseData.szPassword, { success: function () { console.log('登陆成功!') // 获取通道列表 that.getChannel() }, error: function () { this.$message.closeAll() this.$message({ duration: 0, message: '登陆失败,请检查配置信息或刷新页面重试!', type: 'error' }) } }) }, getChannel() { const that = this that.ChannelsList = [] WebVideoCtrl.I_GetDigitalChannelInfo(this.baseData.szIP + '_' + this.baseData.szPort, { async: false, success: (xmlDoc) => { var oChannels = $(xmlDoc).find('InputProxyChannelStatus') $.each(oChannels, function (i) { var id = $(this).find('id').eq(0).text() var name = $(this).find('name').eq(0).text() var online = $(this).find('online').eq(0).text() if (online === 'true') { that.ChannelsList.push({ id, name, online }) } }) this.$message.closeAll() this.$message({ message: '初始化完成,您可以开始操作', type: 'success' }) console.log(that.ChannelsList) }, error: (err) => { this.$message.closeAll() this.$message({ duration: 0, message: '获取通道失败,请检查配置信息或刷新页面重试!', type: 'error' }) } }) }, async clickNode(data) { // 停止播放 await WebVideoCtrl.I_Stop({ iWndIndex: this.selectWindow }) await this.preview(this.selectWindow, data.id) console.log('当前选中' + this.selectWindow + '窗口,在此预览' + data.id + '通道画面') }, preview(selectWindow, pass) { WebVideoCtrl.I_StartRealPlay(this.baseData.szIP + '_' + this.baseData.szPort, { iWndIndex: selectWindow, iChannelID: pass }) } }, beforeDestroy() { // 停止播放 WebVideoCtrl.I_StopAllPlay() // 登录设备 WebVideoCtrl.I_Logout(this.baseData.szIP + '_' + this.baseData.szPort) // 销毁插件 WebVideoCtrl.I_DestroyPlugin() this.$message.closeAll() }, destroy() { const that = this setTimeout(() => { that.breakdom() }, 100) } } </script> <style rel="stylesheet/scss" lang="scss" scoped> .monitoring { width: 100%; display: flex; justify-content: space-between; .worktop { height: 770px; padding: 0 10px; .treeOption { height: 550px; overflow: auto; } .title { text-align: center; font-size: 22px; height: 50px; line-height: 50px; } width: 245px; height: 770px; } #divPlugin { width: calc(100% - 250px); height: 770px; background-color: #000; } } .custom-tree-node { width: 70%; display: flex; justify-content: space-between; align-items: center; } </style>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 22:35:21

Tucker分解与张量草图:高维数据压缩的工程实践

简介&#xff1a;本资源是一套面向图像处理与张量计算方向研究者及高年级本科生的Tucker分解实践工具包&#xff0c;聚焦于多维图像数据的降噪、增强与特征提取等预处理任务。压缩包共30个文件&#xff08;83KB&#xff09;&#xff0c;含14个MATLAB主程序&#xff08;如tucker…

作者头像 李华
网站建设 2026/9/3 22:32:50

WinForms数据可视化:ScottPlot从入门到性能优化实战

简介&#xff1a;面向.NET/C# WinForm开发者的ScottPlot演示资源包&#xff0c;基于贝塞尔曲线等图形场景&#xff0c;解决WinForm中大规模数据交互展示与绘图效率问题&#xff0c;适合需要快速集成折线图、柱状图、饼图、散点图的中级开发者。包体共34个文件&#xff0c;约1MB…

作者头像 李华
网站建设 2026/9/3 22:30:35

1/64比例摩托车模型评测与收藏指南:以阿普利亚RS660为例

1/64比例阿普利亚RS660的模型&#xff0c;尺寸不过三厘米出头&#xff0c;却要装下一台长度接近两米的实车设计语言。这个尺度下&#xff0c;很多在1/18、1/12模型上能轻松表达的细节&#xff0c;会变成一道道需要用放大镜才能分辨的刻线、分色和贴纸。这篇文章就把这台微缩RS6…

作者头像 李华
网站建设 2026/9/3 22:30:32

煤矿井下安全帽数据集构建与YOLOv8检测实战

简介&#xff1a;煤矿井下作业安全监测场景中&#xff0c;已标注安全帽数据集面向计算机视觉、目标检测方向的研究者与煤矿智能安防开发者&#xff0c;可用于训练与评估安全帽佩戴识别模型。资源共436个文件&#xff0c;包含218张井下实拍jpg图像及一一对应的218个xml标注文件&…

作者头像 李华