关于视频监控介入的部分内容,使用的是海康H5web播放的模式

这是原发直接能在系统中使用。里面的样式自己修改,主要是在引入时出现黑色的框就是引入成功,需要在public文件夹中引入h5player.min.js文件就可以。

<template><div class="Shiping"><el-container><el-header><div class="cont"><div class="container"><div class="item1">水库</div><div class="item2">视频管理系统</div></div><div class="container1"><div class="ite" @click="zhuxiao">关闭</div></div></div></el-header><el-container><el-aside><el-row class="tac"><el-col :span="12"><el-menu default-active="2" @open="handleOpen" @close="handleClose" style="padding-bottom:20px"><el-submenu v-for="(item, index) in menuData" :index="String(index)" :key="item.lbname"><template slot="title"><i class="el-icon-location"></i><span>{{ item.lbname }}</span></template><el-menu-item v-for="(subItem, subIndex) in item.list" :index="String(subIndex)" :key="subItem.lbname"  @click="selectSXT1(subItem)">{{ subItem.jknm }}</el-menu-item></el-submenu></el-menu></el-col></el-row></el-aside><el-main><div class="container"><div class="top"><div id="player1"></div></div></div></el-main></el-container></el-container></div>
</template><script>
import "../../../../public/js/h5player.min.js"
import { getCameraPreview, getCameraList, futureRain,getVideoURL, getBySbSpjk,getControl,getPreset,setPreset,delPreset} from "@/api/business/srceenShow";
export default {data(){return{//videoDialog标题currentCameraInfogetHHHvideoTitle: "",//播放个数splitNum: 9,//普通模式和高级模式mode: 1,//播放对象player1: null,//图片数据存放imageData: null,//播放地址urls: {realplay: "ws://60.212.191.94:559/openUrl/gV8OTMQ",},//当前摄像头currentCameraInfo: {},//是否设置预置点位标识isSetPreset: false,//预置点位presetList: [//   {//   "presetPointName":"无",//   "presetPointIndex":0// }],volume: 30,//云台控制请求参数queryControlParam: {cameraCodeIndex: null,//默认为1  停止   0为开始action: 1,//命令command: null,//移动速度 1-100  默认为50speed: 10,// 预置点下标presetIndex: null,//预置点名称presetName: null,},//视频监控列表子项cameraList:[],dataList: [],  // 从后端获取的数据menuData: []   // 转换后的菜单数据}},created() {getCameraList().then((response) => {// 处理获取到的数据this.dataList = response.data;// 将获取到的数据转换为菜单数据结构this.transformToMenuData(this.dataList);});},mounted() {this.getList();this.createPlayer()this.arrangeWindow()// this.getHHH("9f83a4c1b0cc4542bfccdfba8adf4e5d");// setTimeout(() => {//     this.realplay()//     this.arrangeWindow()// }, 2000); // 100毫秒的延迟  改为2秒。。。},methods:{//点击列表中数据触发 获取摄像头播放地址getHHH(cameraCode) {let query = { cameraIndexCode:cameraCode };this.queryControlParam.cameraCodeIndex = cameraCodegetVideoURL(query).then(resp=>{this.urls.realplay = resp.data.urlthis.getPreset()})},//内层的点击播放视频事件selectSXT1(subItem) {      const jkcode = subItem.jkcode;this.getHHH(jkcode);setTimeout(() => {this.realplay()// this.arrangeWindow()}, 2000); // 100毫秒的延迟  改为2秒。。。this.player1.JS_SelectWnd().then(() => {console.info('JS_SelectWnd success');// do you want...},(err) => {console.info('JS_SelectWnd failed');// do you want...});},transformToMenuData(dataList) {this.menuData = dataList.map(item => {return {lbname: item.lbname,list: item.list,total: item.total};});},getList() {getCameraList().then((response) => {this.dataList = response.data;// console.log(this.dataList,"----------------------------00000000000000")// this.cameraList = this.dataList.filter(x=>x.lbname == "溢洪闸")[0].list});},zhuxiao(){this.$router.push({ path: '/index' })this.stopAllPlay()},handleOpen(key, keyPath) {// console.log(key, keyPath);},handleClose(key, keyPath) {// console.log(key, keyPath);},//-----------------------------//返回预置点位backPreset(){this.queryControlParam.presetIndex = 1this.control("GOTO_PRESET")},//查看预置点位getPreset(){getPreset(this.queryControlParam).then(resp=>{this.presetList=resp.data.list// console.log(this.presetList,resp,"预置点位")})},//设置预置点位setPreset(){//查询出最大的下标编码+1并赋值let maxIndex = this.presetList.map(i=>{return i.presetPointIndex}).reduce((a, b)=>a>b?a:b ) || 1;this.queryControlParam.presetIndex = Number(maxIndex)+1setPreset(this.queryControlParam).then(resp=>{// console.log(resp,"设置预置点位")if(resp.code=='0'){this.isSetPreset = falsethis.$message.success("设置预置点位成功")this.getPreset()}})},//删除预置点位delPreset(){// console.log(this.queryControlParam,"请求参数")delPreset(this.queryControlParam).then(resp=>{// console.log(resp,"删除预置点位")if(resp.code=='0'){this.$message.success("删除预置点位成功")this.getPreset()}})},//云台控制 开始 操作control(command) {if (this.player1.isOk) {this.$message.info("监控未打开,无法操作")return}this.queryControlParam.cameraCodeIndex = this.currentCameraInfo.jkcodethis.queryControlParam.action = 0this.queryControlParam.command = commandthis.getControl()setTimeout(() => {this.controlStop()}, 3000)},//云台控制 暂停controlStop() {if (this.player1.isOk) {this.$message.info("监控未打开,无法操作")return}// setTimeout(() => {this.queryControlParam.cameraCodeIndex = this.currentCameraInfo.jkcodethis.queryControlParam.action = 1this.getControl()// }, 3000); // 100毫秒的延迟  改为3秒。。。},//云台控制接口getControl() {if (this.queryControlParam.cameraCodeIndex == null) {this.$message.info("未获取摄像头信息,请重试")}getControl(this.queryControlParam).then(resp => {// console.log(resp)})},//控制分屏个数arrangeWindow() {let splitNum = this.splitNumthis.player1.JS_ArrangeWindow(splitNum).then(() => {//  console.log(`arrangeWindow to ${splitNum}x${splitNum} success`)},e => {console.error(e)})},//放大全屏wholeFullScreen() {this.player1.JS_FullScreenDisplay(true).then(() => {// console.log(`wholeFullScreen success`)},e => {console.error(e)})},//声音控制openSound() {this.muted = falsethis.player1.JS_OpenSound().then(() => {// console.log('openSound success')this.muted = false},e => {console.error(e)})},closeSound() {this.muted = truethis.player1.JS_CloseSound().then(() => {// console.log('closeSound success')this.muted = true},e => {console.error(e)})},setVolume(value) {let player1 = this.player1,index = player1.currentWindowIndexthis.player1.JS_SetVolume(index, value).then(() => {// console.log('setVolume success', value)},e => {console.error(e)})},init() {let iWidth = 1144let iHeight = 698this.player1.JS_Resize(iWidth, iHeight)},/*** 初始化播放器*/createPlayer() {this.player1 = new window.JSPlugin({szId: "player1",szBasePath: "/js/",iMaxSplit: 3,iCurrentSplit: 1,openDebug: true,oStyle: {borderSelect: "#FFCC00",},})// this.init()//视频是否播放标识  0 播放  1 停止this.player1.isOk = 1// 事件回调绑定this.player1.JS_SetWindowControlCallback({windowEventSelect: function (iWndIndex) {//插件选中窗口回调// console.log('windowSelect callback: ', iWndIndex);// that.$emit('getWndPk',iWndIndex) },pluginErrorHandler: function (iWndIndex, iErrorCode, oError) {//插件错误回调// console.log('pluginError callback: ', iWndIndex, iErrorCode, oError);// that.showErrror(iErrorCode,iWndIndex) },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: ');},})// console.log(this.player1,"打印player")},cancelCapture() {// this.openPlay = false;// this.player1 = nullthis.imageData = null},// 关闭所有视频stopAllPlay () {this.player1.JS_StopRealPlayAll().then(() => {this.playback.rate = 0// console.log('stopAllPlay success')this.closeVideoTree()},e => { console.error(e) })},/* 预览&对讲 */realplay() {// this.init()let { player1, mode, urls } = this,index = player1.currentWindowIndex,playURL = urls.realplay// console.log(playURL,'playURL')this.player1.JS_Play(playURL, { playURL, mode }, index).then(() => {//视频已播放this.player1.isOk = 0// console.log('realplay success')index = index + 1;if (index == this.maxSplit) { index = 0 }player1.JS_SelectWnd(index);},e => {console.error(e)})},stopPlay() {this.player1.JS_Stop().then(() => {this.player1.isOk = 1// console.log('stop realplay success')},e => {console.error(e)})this.queryControlParam = {cameraCodeIndex: null,//默认为1  停止   0为开始action: 1,//命令command: null,//移动速度 1-100  默认为50speed: 50,// 预置点下标presetIndex: null,}},}
}
</script><style lang="scss" scoped>
.Shiping{width: 70vw;// height: 80vh;background-image: url("~@/assets/images/jianjie.png");background-size: 100% 100%;position: fixed;top: 50%;left: 50%;transform: translate(-50%, -46%);.el-header, .el-footer {// color: #ca2d2d;background: linear-gradient(-90deg, #14234B, #0C3C78);// line-height: 40px;.cont{display: flex;justify-content: space-between;.container {display: grid;grid-template-columns: auto auto; /* 指定两列 */padding: 10px;.item1 {padding: 4px;color: #fbf8f8;font-size: 26px;}.item2 {color: #f8f5f5;font-size: 16px;padding: 10px;}}.container1 {display: grid;grid-template-rows: auto;padding: 20px;.ite {color: #fbf8f8;font-size: 18px;cursor: pointer;}}}}.el-aside {background: #264f80;line-height: 190px;width: 300px;// color: #cf2626;span{font-size: 18px;color: #faf6f6;}.el-menu {width: 350px;height: 200px;background: #264f80;border-right: 0px ;::v-deep .el-submenu__title:hover {background-color: #264f80;color: #faf6f6;}::v-deep .el-menu-item-group__title {padding: 0px 0px 0px 10px;line-height: normal;font-size: 18px;color: #909399;}.el-submenu .el-menu-item {background: #264f80;color: #faf6f6;height: 40px;}}&::-webkit-scrollbar {width: 5px;height: 2px;}&::-webkit-scrollbar-track {background: #1b5689;border-radius: 10px;}&::-webkit-scrollbar-thumb {background: #70c0ff;border-radius: 10px;}}.el-main {background: #26426D;text-align: center;// line-height: 820px;// height: 860px;// padding: 10px 10px;.container {display: flex;flex-direction: column;height: 840px; /* 设置高度,方便查看效果 */.top{width: 100%;height: 100%;#player1{width: 80%;height: 100%;}}}.container > div {display: flex;justify-content: space-around;align-items: center;flex: 1;}.container > div > div {width: 480px;height: 480px;// background-color: rgb(13, 13, 13);margin: 10px;}&::-webkit-scrollbar {width: 5px;}&::-webkit-scrollbar-track {background: #1b5689;border-radius: 10px;}&::-webkit-scrollbar-thumb {background: #70c0ff;border-radius: 10px;}}
}
</style>

原文件包:海康开放平台

这是需要导入的包在bin目录下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/437556.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据分享】2001-2023年我国省市县镇四级的逐月平均气温数据(免费获取/Shp/Excel格式)

之前我们分享过1901-2023年1km分辨率逐月平均气温栅格数据&#xff0c;该数据来源于国家青藏高原科学数据中心。为方便大家使用&#xff0c;我们还基于上述平均气温栅格数据将数据处理为Shp和Excel格式的省市县三级逐月平均气温数据&#xff08;可查看之前的文章获悉详情&#…

ubuntu 18.04 cuda 11.01 gpgpu-sim 裸机编译

1&#xff0c;环境 ubuntu 18.04 x86_64 cuda 11.01 gpgpu-sim master commit 90ec3399763d7c8512cfe7dc193473086c38ca38 2&#xff0c;预备环境 一个比较新的 ubuntu 18.04&#xff0c;为了迎合 cuda 11.01 的版本需求 安装如下软件&#xff1a; sudo apt-get instal…

【Linux】几种常见配置文件介绍

配置文件目录 linux 系统中有很多配置文件目录 /etc/systemd/system /lib/systemd/system /usr/lib/systemd/system 【结果就是这个目录配置文件是源头】 这三者有什么样的关系呢&#xff1f; 以下是网络上找的资料汇总&#xff0c;并加了一些操作验证。方便后期使用 介…

VMware中Ubuntu系统Docker正常运行但网络不通(已解决)

问题描述&#xff1a;在VMware中的Ubuntu系统下部署了Docker&#xff0c;当在docker容器中运行Eureka微服务时&#xff0c;发现Eureka启动正常&#xff0c;但无法通过网页访问该容器中Eureka。 解决办法如下&#xff1a; 1、创建桥接网络&#xff1a;test-net sudo docker n…

ARM 架构、cpu

一、ARM的架构 ARM是一种基于精简指令集&#xff08;RISC&#xff09;的处理器架构. 1、ARM芯片特点 ARM芯片的主要特点有以下几点&#xff1a; 精简指令集&#xff1a;ARM芯片使用精简指令集&#xff0c;即每条指令只完成一项简单的操作&#xff0c;从而提高指令的执行效率…

进程的创建、多任务及退出

一、创建进程 1、并发与并行 为了提高计算机执行任务的效率&#xff0c;一般采用的解决方案就是能够让多个任务同时进行&#xff0c;可以使用 并发 与 并行两种方式 并行 : 在 cpu 多核的支持下&#xff0c;实现物理上的同时执行 并发 : 在有限的 cpu 核芯的情况下 , …

60 序列到序列学习(seq2seq)_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录一、理论知识比喻机器翻译Seq2seq编码器-解码器细节训练衡量生成序列的好坏的BLEU(值越大越好)总结 二、代码编码器解码器损失函数训练预测预测序列的评估小结练习 一、理论知识 比喻 seq2seq就像RNN的转录工作一样&#xff0c;非常形象的比…

Percona Monitoring and Management

Percona Monitoring and Management (PMM)是一款开源的专用于管理和监控MySQL、MongoDB、PostgreSQL

netty之NettyClient半包粘包处理、编码解码处理、收发数据方式

前言 Netty开发中&#xff0c;客户端与服务端需要保持同样的&#xff1b;半包粘包处理&#xff0c;编码解码处理、收发数据方式&#xff0c;这样才能保证数据通信正常。在前面NettyServer的章节中我们也同样处理了&#xff1b;半包粘包、编码解码等&#xff0c;为此在本章节我们…

C++和OpenGL实现3D游戏编程【连载12】——游戏中音效的使用

1、游戏中音效的使用 前面我们实现了图片纹理的显示功能,是不是感觉到非常的简单。那么今天我们就继续说下游戏声音的实现。音效也是游戏的灵魂,只有搭配了美妙动听的音效以后,游戏才能令人耳目一新,与玩家产生良好的效果。 音效文件最常用的可分为两种,分别为.wav和.mp3…

SQL Server中关于个性化需求批量删除表的做法

在实际开发中&#xff0c;我们常常会遇到需要批量删除表&#xff0c;且具有共同特征的情况&#xff0c;例如&#xff1a;找出表名中数字结尾的表之类的&#xff0c;本文我将以3中类似情况为例&#xff0c;来示范并解说此类需求如何完成&#xff1a; 第一种&#xff0c;批量删除…

Mysql 学习——项目实战

MySQL 学习——项目实战 项目出处 博主&#xff1a;Asmywishi Linux-Ubuntu启动Mysql sudo mysqlData preparation Create Database and Table Create database : create database mysql_example1;Start database : use mysql_example1;Create Student table : # 学生表…

使用VBA快速将文本转换为Word表格

Word提供了一个强调的文本转表格的功能&#xff0c;结合VBA可以实现文本快速转换表格。 示例文档如下所示。 现在需要将上述文档内容转换为如下格式的表格&#xff0c;表格内容的起始标志为。 示例代码如下。 Sub SearchTab()Application.DefaultTableSeparator "*&quo…

828华为云征文 | 基于华为云Flexus云服务器X搭建部署——AI知识库问答系统(使用1panel面板安装)

&#x1f680;对于企业来讲为什么需要华为云Flexus X来搭建自己的知识库问答系统&#xff1f;&#xff1f;&#xff1f; 【重塑知识边界&#xff0c;华为云Flexus云服务器X引领开源问答新纪元&#xff01;】 &#x1f31f; 解锁知识新动力&#xff0c;华为云Flexus云服务器X携…

【算法】DFS 系列之 穷举/暴搜/深搜/回溯/剪枝(上篇)

【ps】本篇有 9 道 leetcode OJ。 目录 一、算法简介 二、相关例题 1&#xff09;全排列 .1- 题目解析 .2- 代码编写 2&#xff09;子集 .1- 题目解析 .2- 代码编写 3&#xff09;找出所有子集的异或总和再求和 .1- 题目解析 .2- 代码编写 4&#xff09;全排列 II…

C语言语句、语句分类及注释

文章目录 一、语句和语句分类二、注释&#x1f355;注释是什么&#xff1f;为什么写注释&#xff1f;1. /**/的形式2. //的形式3. 注释会被替换 三、随机数的生成1.rand函数2.srand函数3.time函数4.设置随机数的范围 四、C99中的变长数组五、问题表达式解析表达式1表达式2表达式…

手机实时提取SIM卡打电话的信令声音-(题外、插播一条广告)

手机实时提取SIM卡打电话的信令声音-(题外、插播一条广告) 前言 在去年的差不多这个时候&#xff0c;我们做了一遍外置配件的选型&#xff0c;筛选过滤了一批USB蓝牙配件和type-c转usb的模块。详情可参考《外置配件的电商价格和下载链接的选型.docx》一文&#xff1a;蓝牙电话…

FireRedTTS - 小红书最新开源AI语音克隆合成系统 免训练一键音频克隆 本地一键整合包下载

小红书技术团队FireRed最近推出了一款名为FireRedTTS的先进语音合成系统&#xff0c;该系统能够基于少量参考音频快速模仿任意音色和说话风格&#xff0c;实现独特的音频内容创造。 FireRedTTS 只需要给定文本和几秒钟参考音频&#xff0c;无需训练&#xff0c;就可模仿任意音色…

Python基础语句教学

Python是一种高级的编程语言&#xff0c;由Guido van Rossum于1991年创建。它以简单易读的语法和强大的功能而闻名&#xff0c;被广泛用于科学计算、Web开发、数据分析等领域。 Python的应用领域广泛&#xff0c;可以用于开发桌面应用程序、Web应用、游戏、数据分析、人工智能等…

基于SSM的列车订票管理系统(含源码+sql+视频导入教程+文档+PPT)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的列车订票管理系统3拥有两种角色&#xff1b;管理员、用户 管理员&#xff1a;用户管理、车票管理、购票指南管理、系统管理等 用户&#xff1a;发布帖子、登录注册、购票等 1.…