位置: IT常识 - 正文

vue+js+海康web开发包接入海康威视摄像头(海康威视web开发接口文档)

编辑:rootadmin
vue+js+海康web开发包接入海康威视摄像头

推荐整理分享vue+js+海康web开发包接入海康威视摄像头(海康威视web开发接口文档),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:海康威视web开发,海康威视web开发接口文档,海康威视 web sdk,海康web sdk,海康威视 web sdk,海康威视 web sdk,vue海康威视,海康威视web开发接口文档,内容如对您有帮助,希望把文章链接给更多的朋友!

一、登录海康开放平台下载web开发包,下载需要先登录海康账号,没有的需先注册一个。

海康开放平台web开发包下载地址:https://open.hikvision.com/download/5cda567cf47ae80dd41a54b3?type=10&id=4c945d18fa5f49638ce517ec32e24e24

二、将web开发包引入vue项目

下载后解压的包目录如下:

将把webs下的整个codebase文件夹和jquery-1.7.1.min.js都复制到public文件夹下,在index.html下引入对应文件,必须引入的只有jquery-1.7.1.min.js和webVideoCtrl.js

<!-- 海康插件引入 --><script src="./jquery-1.7.1.min.js"></script><script src="./codebase/encryption/AES.js"></script><script src="./codebase/encryption/cryptico.min.js"></script><script src="./codebase/encryption/crypto-3.1.2.min.js"></script><script id="videonode" src="./codebase/webVideoCtrl.js"></script>

三、安装webs/codebase/WebComponentsKit.exe(可不做此操作)

四、运行解压包的nginx-1.10.2/start.bat,nginx启动端口可以自行修改;此处默认80,其中为了方便开发环境下测试,我把nginx-1.10.2放到项目中与public文件夹同级,因此nginx的root路径设置为../dist(项目打包路径,根据需要自行修改)

开发环境配置:在vue.config.js文件下配置nginx对应的反向代理,以下webSocketVideoCtrlProxy反向配置暂未配置成功,因此开发过程看不了视频,但可以进行登录等其他与websocket无关的接口的调用,想要成功拉流看视频得先打包部署,这个有弄懂的小伙伴可以告知一下

"/ISAPI": {target: "http://127.0.0.1/ISAPI", // 本地nginx服务changeOrigin: true,ws: true,pathRewrite: {"^/ISAPI": "/",},},"/SDK": {target: "http://127.0.0.1/SDK", // 本地nginx服务changeOrigin: true,ws: true,pathRewrite: {"^/SDK": "/",},},// webSocketVideoCtrlProxy反向配置暂未配置成功,当前配置在开发过程不需要打包就可实现除播放视频外的其他功能

注意:

1、本地开发过程nginx服务必须运行

2、开发过程运行项目地址必须是本地ip地址,不能用localhost那个,否则登录不成功

3、开发过程想要预览监控视频,需要先打包,然后访问部署后的项目路径,访问ip必须是服务器ip地址,不能用localhost或者127.0.0.1,否则登录不成功

五、初始化

<divid="divPlugin"style="height: 100%; width: 100%"></div>vue+js+海康web开发包接入海康威视摄像头(海康威视web开发接口文档)

注意:Dom元素ID必须是divPlugin,不然会出问题

初始化函数如下:

/*** 初始化* @param {number} iWndowType 分屏类型:1 - 1*1,2 - 2*2,3 - 3*3,4 - 4*4,默认值1,单画面* @param {number} width 插件的宽度(单位为”px”, 100%表示撑满插件容器)* @param {number} height 插件的高度(单位为”px”, 100%表示撑满插件容器)* @returns null*/let init = (iWndowType, width, height) => {console.log("window.WebVideoCtrl-------", window.WebVideoCtrl, width, height);// 检查浏览器是否支持无插件if (!webVideoCtrl.I_SupportNoPlugin()) {Message.warning("当前浏览器不支持无插件预览监控视频,已自动切换成插件模式,如果还未安装插件请安装");// 检查插件是否已经安装const isInstall = webVideoCtrl.I_CheckPluginInstall();if (isInstall == -1) {Message.warning("您还未安装过插件,请先下载WebComponentsKit.exe双击安装!");return;}}// 初始化插件webVideoCtrl.I_InitPlugin(width, height, {szColorProperty:"plugin-background:ffffff; sub-background:00000; sub-border:D0DAE4; sub-border-select:409EFF", // 表示插件的背景颜色,插件子窗口的背景颜色,窗口边框的颜色,窗口边框选中后的颜色iWndowType,bNoPlugin: true, // 支持无插件cbSelWnd: (xmlDoc) => {let iWndIndex = parseInt($(xmlDoc)?.find("SelectWnd").eq(0).text(), 10);console.log("当前选择的窗口编号:" + iWndIndex);},cbDoubleClickWnd: (iWndIndex, bFullScreen) => {let szInfo = "当前放大的窗口编号:" + iWndIndex;if (!bFullScreen) {szInfo = "当前还原的窗口编号:" + iWndIndex;}console.log(szInfo);},cbInitPluginComplete: () => {// 嵌入播放插件webVideoCtrl.I_InsertOBJECTPlugin("divPlugin");console.log("初始化成功--------");resize();// 检查插件是否最新if (webVideoCtrl.I_CheckPluginVersion() == -1) {Message.warning("检测到新的插件版本,双击WebComponentsKit.exe升级!");return;}}, // 插件初始化完成回调,必须要定义});};

在实际使用过程,iWndowType不管怎么设置都不起效,只有在窗口resize后才起作用,所以在初始化成功后手动加了resize()给它调整大小,resize()函数封装在下面可以找到。

六、主要函数封装

调整大小

/*** 调整大小*/let resize = () => {webVideoCtrl.I_Resize($("#divPlugin").width(), $("#divPlugin").height());};

登录:初始化成功后调用,登录成功后根据需要获取通道信息,这里我获取的是数字通道的数据

/*** 登录* @param {string} ip 设备的 IP 地址或者普通域名* @param {number} prototocol http 协议,1 表示 http 协议 2 表示 https 协议* @param {number} port 登录设备的 http/https 端口号,根据 iPrototocol 选择传入不同的端口* @param {string} userName 登录用户名称* @param {string} password 用户密码*/let login = (ip, prototocol, port, userName, password) => {webVideoCtrl.I_Login(ip, prototocol, port, userName, password, {async: true, // http 交互方式,true 表示异步,false 表示同步cgi: 1, // CGI 协议选择,1 表示 ISAPI,2 表示 PSIA,如果不传这个参数,会自动选择一种设备支持的协议.// 登录成功回调success: (xmlDoc) => {console.log("login success-----------", xmlDoc);// getAnalogChannelInfo(`${ip}_${port}`, {// async: true,// success: (analogChannelInfo) => {// let analogCameras = analysisAnalogChannelInfo(analogChannelInfo);// console.log(// "获取模拟通道----------",// analogChannelInfo,// analogCameras// );// },// error: (statusA, xmlDocA) => {// console.log("获取模拟通道 error-----------", statusA, xmlDocA);// },// });getDigitalChannelInfo(`${ip}_${port}`, {async: true,success: (digitalChannelInfo) => {let digitalCameras = analysisDigitalChannelInfo(digitalChannelInfo);console.log("获取数字通道----------",digitalChannelInfo,digitalCameras);},error: (statusD, xmlDocD) => {console.log("获取数字通道 error-----------", statusD, xmlDocD);},});// getZeroChannelInfo(`${ip}_${port}`, {// async: true,// success: (zeroChannelInfo) => {// let zeroCameras = analysisZeroChannelInfo(zeroChannelInfo);// console.log("获取零通道----------", zeroChannelInfo, zeroCameras);// },// error: (statusZ, xmlDocZ) => {// console.log("获取零通道 error-----------", statusZ, xmlDocZ);// },// });},// 失败函数回调error: () => {console.log("login error-----------");},});};

登出

/*** 登出* @param {string} deviceIdentify 设备标识(IP_Port)* @returns 成功返回 0,失败返回-1*/let logout = (deviceIdentify) => {return webVideoCtrl.I_Logout(deviceIdentify);};

获取模拟通道

/*** 获取模拟通道* @param {string} deviceIdentify 设备标识(IP_Port)* @param {*} options 可选参数对象:* * async http 交互方式,true 表示异步,false 表示同步;* * success 成功回调函数,有一个参数,表示返回的 XML 内容。;* * error 失败回调函数,有两个参数,第一个是 http 状态码,第二个是设备返回的 XML(可能为空)*/let getAnalogChannelInfo = (deviceIdentify, options) => {webVideoCtrl.I_GetAnalogChannelInfo(deviceIdentify, options);};

解析模拟通道XML内容

/*** 解析模拟通道XML内容* @param {XMLDocument} xmlDoc XML内容* @returns cameraList: 监控列表*/let analysisAnalogChannelInfo = (xmlDoc) => {let cameraList = [];let channels = $(xmlDoc)?.find("VideoInputChannel");$.each(channels, (i, channel) => {let id = $(channel).find("id").eq(0).text();let name = $(channel).find("name").eq(0).text();if (name == "") {name = "Camera " + (i < 9 ? "0" + (i + 1) : i + 1);}cameraList.push({id,name,});});return cameraList;};

获取数字通道

/*** 获取数字通道* @param {string} deviceIdentify 设备标识(IP_Port)* @param {*} options 可选参数对象:* * async http 交互方式,true 表示异步,false 表示同步;* * success 成功回调函数,有一个参数,表示返回的 XML 内容。;* * error 失败回调函数,有两个参数,第一个是 http 状态码,第二个是设备返回的 XML(可能为空)*/let getDigitalChannelInfo = (deviceIdentify, options) => {webVideoCtrl.I_GetDigitalChannelInfo(deviceIdentify, options);};

解析数字通道XML内容

/*** 解析数字通道XML内容* @param {XMLDocument} xmlDoc XML内容* @param {boolean} filterOnline 是否过滤禁用的数字通道* @returns cameraList: 监控列表*/let analysisDigitalChannelInfo = (xmlDoc, filterOnline) => {let cameraList = [];let channels = $(xmlDoc)?.find("InputProxyChannelStatus");$.each(channels, (i, channel) => {let id = $(channel).find("id").eq(0).text();let name = $(channel).find("name").eq(0).text();let online = $(channel).find("online").eq(0).text();if (filterOnline && online == "false") {// 过滤禁用的数字通道return true;}if (name == "") {name = "IPCamera " + (i < 9 ? "0" + (i + 1) : i + 1);}cameraList.push({id,name,online,});});return cameraList;};

获取零通道

/*** 获取零通道* @param {string} deviceIdentify 设备标识(IP_Port)* @param {*} options 可选参数对象:* * async http 交互方式,true 表示异步,false 表示同步;* * success 成功回调函数,有一个参数,表示返回的 XML 内容。;* * error 失败回调函数,有两个参数,第一个是 http 状态码,第二个是设备返回的 XML(可能为空)*/let getZeroChannelInfo = (deviceIdentify, options) => {webVideoCtrl.I_GetZeroChannelInfo(deviceIdentify, options);};

解析零通道XML内容

/*** 解析零通道XML内容* @param {XMLDocument} xmlDoc XML内容* @param {boolean} filterEnabled 是否过滤禁用的零通道* @returns cameraList: 监控列表*/let analysisZeroChannelInfo = (xmlDoc, filterEnabled) => {let cameraList = [];let channels = $(xmlDoc)?.find("ZeroVideoChannel");$.each(channels, (i, channel) => {let id = $(channel).find("id").eq(0).text();let name = $(channel).find("name").eq(0).text();if (name == "") {name = "Zero Channel " + (i < 9 ? "0" + (i + 1) : i + 1);}let enabled = $(channel).find("enabled").eq(0).text();if (filterEnabled && enabled == "false") {// 过滤禁用的零通道return true;}cameraList.push({id,name,enabled,});});return cameraList;};

开始预览

/*** 开始预览* @param {string} deviceIdentify 设备标识(IP_Port)* @param {*} options 可选参数对象:* * iWndIndex 播放窗口,如果不传,则默认使用当前选择窗口播放(默认选中窗口 0)* * iStreamType 码流类型 1-主码流,2-子码流,默认使用主码流预览* * iChannelID 播放通道号,默认通道 1* * bZeroChannel 是否播放零通道,默认为 false* * iPort RTSP 端口号,可以选择传入,如果不传,开发包会自动判断设备的 RTSP 端口* * success 成功回调函数* * error 失败回调函数*/let startRealPlay = (deviceIdentify, options) => {webVideoCtrl.I_StartRealPlay(deviceIdentify, options);};

停止播放

/*** 停止播放* @param {*} options 可选参数对象:* * iWndIndex 播放窗口号,可不传,表示操作当前选中窗口* * success 成功回调函数* * error 失败回调函数*/let stopPlay = (options) => {webVideoCtrl.I_Stop(options);};

常用函数封装文件下载地址:https://download.csdn.net/download/weixin_46653941/87555074

详细API可以看自己下载的开发包内的Web3.2_控件开发包编程指南.pdf,上面这个下载地址只是我自己二次封装的一些API。

实操结果图(涉及隐私加了马赛克):

本文链接地址:https://www.jiuchutong.com/zhishi/283174.html 转载请保留说明!

上一篇:最贵租金的苹果商店是什么(最贵的一个苹果多少钱)

下一篇:win10待机怎么唤醒(wind10待机唤醒)

  • 华为nova5i有指关节截屏吗(华为nova5指纹解锁灯怎么关)

    华为nova5i有指关节截屏吗(华为nova5指纹解锁灯怎么关)

  • 手机充电孔充不了电该自己怎么解决(手机充电孔充不上电能修吗)

    手机充电孔充不了电该自己怎么解决(手机充电孔充不上电能修吗)

  • 优酷会员卡激活入口是什么(优酷会员卡激活码是多少)

    优酷会员卡激活入口是什么(优酷会员卡激活码是多少)

  • 文档怎么搜索关键字(文档里搜索)

    文档怎么搜索关键字(文档里搜索)

  • 照相馆是激光还是喷墨(照相馆是激光还是灯光)

    照相馆是激光还是喷墨(照相馆是激光还是灯光)

  • 手机100电突然没电了(手机100电突然没电了充电还打不开苹果6)

    手机100电突然没电了(手机100电突然没电了充电还打不开苹果6)

  • 探探如何找回解除匹配的人(探探如何找回解绑账号)

    探探如何找回解除匹配的人(探探如何找回解绑账号)

  • 新浪分期运营商认证不了(新浪分期运营商认证是什么意思)

    新浪分期运营商认证不了(新浪分期运营商认证是什么意思)

  • qq显示忙碌对方在干嘛(qq显示忙碌是在跟别人聊吗)

    qq显示忙碌对方在干嘛(qq显示忙碌是在跟别人聊吗)

  • 微信用户名与姓名不匹配怎么办(微信用户名与姓名不匹配)

    微信用户名与姓名不匹配怎么办(微信用户名与姓名不匹配)

  • 小米手机充不进电(小米手机充不进去电怎么回事,也开不开机)

    小米手机充不进电(小米手机充不进去电怎么回事,也开不开机)

  • 二进制数10101转换成十进制数(数字转二进制)

    二进制数10101转换成十进制数(数字转二进制)

  • 快盘停用东西怎么找回(快盘里面的文件怎么办)

    快盘停用东西怎么找回(快盘里面的文件怎么办)

  • 计算机的存储器是一种(计算机的存储器分为内存储器和外存储器)

    计算机的存储器是一种(计算机的存储器分为内存储器和外存储器)

  • 计算机病毒破坏的主要对象是(计算机病毒破坏性是指)

    计算机病毒破坏的主要对象是(计算机病毒破坏性是指)

  • 电脑上怎么画直线(电脑怎么画直方图)

    电脑上怎么画直线(电脑怎么画直方图)

  • 如何在淘宝卖自己商品(如何在淘宝卖自己想卖的)

    如何在淘宝卖自己商品(如何在淘宝卖自己想卖的)

  • 魅族16支持多少w的快充(魅族16th最高支持多少w快充)

    魅族16支持多少w的快充(魅族16th最高支持多少w快充)

  • 抖音怎么私密自己的作品(抖音怎么私密自己的抖音号)

    抖音怎么私密自己的作品(抖音怎么私密自己的抖音号)

  • 华为在法国发布会上公布的是哪一款手机(华为 法国)

    华为在法国发布会上公布的是哪一款手机(华为 法国)

  • 苹果自带的库乐队删了怎么下载(苹果自带的库乐队有什么用)

    苹果自带的库乐队删了怎么下载(苹果自带的库乐队有什么用)

  • 苹果x多重(苹果xr多重)

    苹果x多重(苹果xr多重)

  • 苹果8镜像模式怎么关(苹果镜像模式如何设置在哪里)

    苹果8镜像模式怎么关(苹果镜像模式如何设置在哪里)

  • 快剪辑卡点视频怎么做(快剪辑如何卡点做视频)

    快剪辑卡点视频怎么做(快剪辑如何卡点做视频)

  • 苹果短信删了能恢复吗(苹果短信删了能找到吗)

    苹果短信删了能恢复吗(苹果短信删了能找到吗)

  • airpods可以调音量吗(airpods可以调声音嘛)

    airpods可以调音量吗(airpods可以调声音嘛)

  • 抖音慢慢变老视频怎么拍的(抖音很火的变老视频怎么做的)

    抖音慢慢变老视频怎么拍的(抖音很火的变老视频怎么做的)

  • exfat和ntfs有什么区别

    exfat和ntfs有什么区别

  • 手机怎么进入路由器设置界面(手机怎么进入路由器管理页面)

    手机怎么进入路由器设置界面(手机怎么进入路由器管理页面)

  • 笔记本电脑连接投影仪无信号(笔记本电脑连接打印机操作步骤)

    笔记本电脑连接投影仪无信号(笔记本电脑连接打印机操作步骤)

  • bigfix.exe是什么文件的进程 bigfix进程安全吗(bigfile是什么意思)

    bigfix.exe是什么文件的进程 bigfix进程安全吗(bigfile是什么意思)

  • 二手车需要交哪些额外的钱
  • 预收账款可以开票吗
  • 报完税的发票还能作废吗
  • 每月长摊金额如何分摊
  • 自己打印raz
  • 自然人扣缴是什么意思
  • 2019年残保金申报时间
  • 金银首饰在哪个平台买比较好
  • 雇主责任险税前列支
  • 预缴税款的税率
  • 输入开票码开具电子发票
  • 某运输企业以客运,货运划分
  • 建筑类企业可以申报高新吗
  • 销售不动产增值税税率变化
  • 分配现金股利是什么活动
  • 进口车辆购置税公式
  • 餐饮定额发票怎么征税
  • 资金账簿印花税税率
  • 符合条件的小微企业,减按20%
  • 企业所得税一季度盈利二季度亏损
  • 建造合同收入的内容包括
  • 金税四期查到了怎么办
  • 生产企业结账流程
  • 在win10中显示我的电脑
  • Windows11如何使用管理员账号登录
  • macwifi配置
  • php数组函数,选班长
  • 资产划转增值税 开票怎么开
  • 开发商卖房子要交多少营业税
  • 应付账款盘盈会计分录
  • 土地增值税属于财产税吗
  • 多交税款的退还
  • excel导出exe
  • 加里西亚省
  • laravel框架用到哪些设计模式
  • openvino使用
  • php504错误
  • 最详细、最完整的相机标定讲解
  • 应交税费月末怎么结转分录
  • viite
  • sql死锁的原因及解决方法
  • mysql中触发器的创建有多个执行语句
  • 申请个体工商户流程
  • 企业开办前需要预测现金流量计划吗
  • 财产租赁合同按金额的多少进行计税
  • 删除mysql数据库用户
  • 小规模第一次申报流程
  • 公司收到拆迁补偿金,于评估公司的区别
  • 支付稿费需要发票吗
  • 老板在自己的公司做事
  • 实收资本增加印花税税目怎么填
  • 财务费用科目余额
  • 航天信息何去何从
  • 伤残就业补偿金记入什么科目
  • 分公司可以设立公司吗
  • 注册公司没交社保
  • 资金账簿印花税税率
  • 商业企业的期间费用包括
  • mysql序列函数
  • 微软宣布9月30日停止在俄罗斯服务
  • win8删除所有内容
  • Win10预览版拆弹
  • win10 自带软件
  • linux shell怎么用
  • linux arp -s
  • 64位的win10更新安装补丁KB3105213失败总是重复安装该怎么办?
  • 注册表没有windows nt
  • 电脑安装win8
  • cocos2dx 2.2.2
  • cocos2dx3.3在Win7(64位)上Android开发环境搭建(提要)
  • 自动监测和在线监测一样吗
  • bs cs架构
  • unity之血瓶金币的生成
  • 用js实现冒泡排序
  • jquery的实现原理
  • jquery点击按钮切换图片
  • listview subitems
  • 江西企业社保缴费基数查询
  • 个人怎么在网上交医保和养老保险
  • 城市配套费需要缴纳契税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设