当前位置:首页 » 《随便一记》 » 正文

vue项目接入海康威视H5player.js 2.0版(回放示例)

13 人参与  2023年04月12日 13:24  分类 : 《随便一记》  评论

点击全文阅读


概要

公司项目接入海康威视的球形监控设备,需要项目支持使用海康威视监控视频,以及视频回放等功能。项目要求无插件接入,使用户体验最佳。所以采用海康威视的h5player.js,因为接入时,海康威视的js版本已经2.0,在网上没找到其他博客,所以特此记录。

环境搭建

因为被环境问题搞了好几次,所以特别在此提醒各位同学,在开发之前一定先把环境调好(真的会被搞死的,搞得我头都大了)

首先确认自身项目所在环境(http还是https),在http环境下使用ws协议,在https环境下使用wss协议,两者有严格区分,如果乱用会出现取流失败(流链接无效不通的情况)
区分http和https的环境确认完成自身项目环境之后,请通知后台(或海康威视技术人员)更改取流协议格式,将ws改为wss协议(更改wss协议需要海康威视技术人员给打补丁)下载h5player.js的demo包 地址和跨域隔离方案 地址。按照demo代码进行项目集成

项目集成

将demo中的文件移至项目
demo文件
项目文件

将h5player.min.js引入index.html文件
引入

页面引入
播放器

变量引入
全局变量
data变量
注意看demo,我这里的变量很多改过,进入高级模式(普通模式播不了)

方法引入

  //  选择时间段   查看历史监控视频    searchHistoryTime(){      if (!!!this.beginTime||!!!this.endTime){        this.$message({          message: '请先选择开始时间或结束时间',          type: 'warning'        })        return;      }      let t1 = new Date(this.beginTime).getTime();      let t2 = new Date(this.endTime).getTime();      if (t2 - t1<=0){        this.$message({          message: '开始时间不得大于结束时间!',          type: 'warning'        })        return;      }      if (t2-t1>=259200000){        this.$message({          message: '时间区间不得超过3天!',          type: 'warning'        })        return;      }      $get('/device/hkdevice/info/videoPlayBack',{        beginTime:this.beginTime,        endTime:this.endTime,        cameraIndexCode:this.cameraIndexCode      }).then(res=>{        this.monitorHistoryUrl = res.data.data.url;        this.init();        this.createPlayer();        this.playbackStart();      })    },    init() {      // 设置播放容器的宽高并监听窗口大小变化      window.addEventListener('resize', () => {        this.player.JS_Resize()      })    },    createPlayer() {      let szBasePath = '';      //因为项目配置在二级域名,所以文件需改变路径      if (process.env.NODE_ENV == "production") {        szBasePath = '/bzsv/js/'      }      else{        szBasePath = '/js/'      }      this.player = new window.JSPlugin({        szId: 'player',        szBasePath: szBasePath,        iMaxSplit: 4,        iCurrentSplit: 1,        openDebug: true,        oStyle: {          borderSelect: IS_MOVE_DEVICE ? '#000' : '#FFCC00',        }      })      // 事件回调绑定      this.player.JS_SetWindowControlCallback({        windowEventSelect: function (iWndIndex) {  //插件选中窗口回调          console.log('windowSelect callback: ', iWndIndex);        },        pluginErrorHandler: function (iWndIndex, iErrorCode, oError) {  //插件错误回调          console.log('pluginError callback: ', iWndIndex, iErrorCode, oError);        },        windowEventOver: function (iWndIndex) {  //鼠标移过回调          //console.log(iWndIndex);        },        windowEventOut: function (iWndIndex) {  //鼠标移出回调          //console.log(iWndIndex);        },        windowEventUp: function (iWndIndex) {  //鼠标mouseup事件回调          //console.log(iWndIndex);        },        windowFullCcreenChange: function (bFull) {  //全屏切换回调          console.log('fullScreen callback: ', bFull);        },        firstFrameDisplay: function (iWndIndex, iWidth, iHeight) {  //首帧显示回调          console.log('firstFrame loaded callback: ', iWndIndex, iWidth, iHeight);        },        performanceLack: function () {  //性能不足回调          console.log('performanceLack callback: ');        }      });    },    /* 回放 */    playbackStart() {      let { player, mode, playback } = this,          index = player.currentWindowIndex,          playURL = this.monitorHistoryUrl,          { startTime, endTime } = playback      startTime = this.beginTime.slice(0,19);      endTime = this.endTime.slice(0,19);      startTime += 'Z'      endTime += 'Z'      console.log('111111111111111')      console.log(playURL, mode, index, startTime, endTime)      player.JS_Play(playURL, { playURL, mode }, index, startTime, endTime).then(          () => {            console.log('playbackStart success')            this.playback.rate = 1          },          e => { console.error(e) }      )    },

问题及解决方案

1,打完wss补丁之后
取流失败
bug
2,出现<丢失现象
在这里插入图片描述
解决方案为:
只要console里面出现Uncaught SyntaxError: Unexpected token ‘<‘ 就是new JSPlugin的szBasePath不对导致的
确认h5player.min.js的整个bin目录是否都在,且未改变目录结构,并保证静态引入 h5player.min.js 的路径和 szBasePath 的路径一致,如下图:
注意:无论“静态引入”、“动态加载” 还是“szBasePath”,都是运行环境路径,而不是项目开发结构路径
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


点击全文阅读


本文链接:http://zhangshiyu.com/post/59396.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1