vue3在浏览器段展示海康监控视频

news2024/11/25 9:48:46

一、需求

需要在浏览器点击查看海康的监控视频

二、最后成果展示

插件下载地址:https://download.csdn.net/download/xm_w_xm/87995593

三、思路和方法

3.1 首先安装插件,可以在上面的地址中下载安装,建立一个dom

<div id="playWnd" class="playWnd"></div>

3.2 初始化的时候可以获取一个视频展示的一个长宽

 mounted() {
    this.clientWidth = document.body.clientWidth * (7 / 10);
    this.clientHeight = document.body.clientHeight * (7 / 10);
  },

3.3 vue data中定义

data() {
    return {
      initCount: 0,
      pubKey: "",
      oWebControl: null,
      cameraIndexCode: "",
      title: "",
      clientWidth: 1000,
      clientHeight: 800,
      downloadUrl: `${process.env.VUE_APP_IMG_API}/js/video/VideoWebPlugin.exe`,
    };
  },

3.4 初始化视频的方法在vue的methods中

initPlugin(val) {
      let that = this;
      if (val) {
        that.cameraIndexCode = val.cameraIndex;
        this.title = val.name;
        that.oWebControl = new WebControl({
          szPluginContainer: "playWnd", // 指定容器id
          iServicePortStart: 15900, // 指定起止端口号,建议使用该值
          iServicePortEnd: 15900,
          szClassId: "用于IE10使用ActiveX的clsid", // 用于IE10使用ActiveX的clsid
          cbConnectSuccess: function () {
            // 创建WebControl实例成功
            that.oWebControl
              .JS_StartService("window", {
                // WebControl实例创建成功后需要启动服务
                dllPath: "./VideoPluginConnect.dll", // 值"./VideoPluginConnect.dll"写死
              })
              .then(
                function () {
                  // 启动插件服务成功
                  that.oWebControl
                    .JS_CreateWnd(
                      "playWnd",
                      that.clientWidth,
                      that.clientHeight
                    )
                    .then(function () {
                      //JS_CreateWnd创建视频播放窗口,宽高可设定
                      that.init(); // 创建播放实例成功后初始化
                      setTimeout(() => {
                        that.startPreview();
                      }, 2500);
                    });
                },
                function () {
                  // 启动插件服务失败
                }
              );
          },
          cbConnectError: function () {
            // 创建WebControl实例失败
            that.oWebControl = null;
            $("#playWnd").html(
              "插件未启动,正在尝试启动,请到这个地址下载并安装:" +
                that.downloadUrl
            );
            WebControl.JS_WakeUp("VideoWebPlugin://"); // 程序未启动时执行error函数,采用wakeup来启动程序
            that.initCount++;
            if (that.initCount < 3) {
              setTimeout(function () {
                // that.initPlugin();
              }, 3000);
            } else {
              $("#playWnd").html("插件启动失败,请检查插件是否安装!");
            }
          },
          cbConnectClose: function (bNormalClose) {
            // 异常断开:bNormalClose = false
            // JS_Disconnect正常断开:bNormalClose = true
            console.log("cbConnectClose");
            that.oWebControl = null;
            $("#playWnd").html(
              "插件未启动,正在尝试启动,请到这个地址下载并安装:" +
                that.downloadUrl
            );
            WebControl.JS_WakeUp("VideoWebPlugin://");
            that.initCount++;
            if (that.initCount < 3) {
              setTimeout(function () {
                // that.initPlugin();
              }, 3000);
            } else {
              $("#playWnd").html("插件启动失败,请检查插件是否安装!");
            }
          },
        });
      }
    },
    getPubKey(callback) {
      let that = this;
      that.oWebControl
        .JS_RequestInterface({
          funcName: "getRSAPubKey",
          argument: JSON.stringify({
            keyLength: 1024,
          }),
        })
        .then(function (oData) {
          // console.log(oData);
          if (oData.responseMsg.data) {
            that.pubKey = oData.responseMsg.data;
            callback();
          }
        });
    },
    setEncrypt(value) {
      var encrypt = new JSEncrypt();
      encrypt.setPublicKey(this.pubKey);
      return encrypt.encrypt(value);
    },
    init() {
      let that = this;
      that.getPubKey(function () {
        var appkey = "综合安防管理平台提供的appkey"; //综合安防管理平台提供的appkey,必填
        var secret = that.setEncrypt("综合安防管理平台提供的secret,必填"); //综合安防管理平台提供的secret,必填
        var ip = "综合安防管理平台IP地址,必填"; //综合安防管理平台IP地址,必填
        var playMode = 0; //初始播放模式:0-预览,1-回放
        var port = 443; //综合安防管理平台端口,若启用HTTPS协议,默认443
        var snapDir = "D:\\SnapDir"; //抓图存储路径
        var videoDir = "D:\\VideoDir"; //紧急录像或录像剪辑存储路径
        var layout = "1x1"; //playMode指定模式的布局
        var enableHTTPS = 1; //是否启用HTTPS协议与综合安防管理平台交互,这里总是填1
        var encryptedFields = "secret"; //加密字段,默认加密领域为secret
        var showToolbar = 1; //是否显示工具栏,0-不显示,非0-显示
        var showSmart = 1; //是否显示智能信息(如配置移动侦测后画面上的线框),0-不显示,非0-显示
        var buttonIDs =
          "0,16,256,257,258,259,260,512,513,514,515,516,517,768,769"; //自定义工具条按钮

        that.oWebControl
          .JS_RequestInterface({
            funcName: "init",
            argument: JSON.stringify({
              appkey: appkey, //API网关提供的appkey
              secret: secret, //API网关提供的secret
              ip: ip, //API网关IP地址
              playMode: playMode, //播放模式(决定显示预览还是回放界面)
              port: port, //端口
              snapDir: snapDir, //抓图存储路径
              videoDir: videoDir, //紧急录像或录像剪辑存储路径
              layout: layout, //布局
              enableHTTPS: enableHTTPS, //是否启用HTTPS协议
              encryptedFields: encryptedFields, //加密字段
              showToolbar: showToolbar, //是否显示工具栏
              showSmart: showSmart, //是否显示智能信息
              buttonIDs: buttonIDs, //自定义工具条按钮
            }),
          })
          .then(function (oData) {
            that.oWebControl.JS_Resize(that.clientWidth, that.clientHeight); // 初始化后resize一次,规避firefox下首次显示窗口后插件窗口未与DIV窗口重合问题
          });
      });
    },

3.5 开始方法

// 点击开始
    startPreview() {
      var streamMode = 0; //主子码流标识:0-主码流,1-子码流
      var transMode = 1; //传输协议:0-UDP,1-TCP
      var gpuMode = 0; //是否启用GPU硬解,0-不启用,1-启用
      var wndId = -1; //播放窗口序号(在2x2以上布局下可指定播放窗口)
      this.oWebControl.JS_RequestInterface({
        funcName: "startPreview",
        argument: JSON.stringify({
          cameraIndexCode: this.cameraIndexCode, //监控点编号
          streamMode: streamMode, //主子码流标识
          transMode: transMode, //传输协议
          gpuMode: gpuMode, //是否开启GPU硬解
          wndId: wndId, //可指定播放窗口
        }),
      });
    },

3.6 暂停方法

// 停止
    stopAllPreview() {
      this.oWebControl.JS_RequestInterface({
        funcName: "stopAllPreview",
      });
    },

3.7 销毁监控方法

closeAllPreview() {
      if (this.oWebControl) {
        this.stopAllPreview();
        this.oWebControl.JS_HideWnd();
        this.oWebControl
          .JS_DestroyWnd({
            funcName: "destroyeWnd",
          })
          .then(function () {});
      }
      this.oWebControl = null;
    },
    closeVideo() {
      this.closeAllPreview();
    },

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

利用Dockerfile构建带sshd、jdk服务的自定义镜像

什么是Dockerfile? Dockerfile 是一个文本格式的配置文件&#xff0c; 用户可以使用 Dockerfile 来快速创建自定义的镜像 dockerfile 的基本结构 Dockerfile 由一行行命令语句组成&#xff0c;并且支持以 # 开头的注释行。 一般的&#xff0c;Dockerfile 分为四部分&#…

SpringCloud入门实战(十一)-Spring Cloud Stream消息驱动概述

&#x1f4dd; 学技术、更要掌握学习的方法&#xff0c;一起学习&#xff0c;让进步发生 &#x1f469;&#x1f3fb; 作者&#xff1a;一只IT攻城狮 &#xff0c;关注我&#xff0c;不迷路 。 &#x1f490;学习建议&#xff1a;1、养成习惯&#xff0c;学习java的任何一个技术…

聚焦云原生安全攻防|构建纵深防御的运行时威胁检测体系

7月2日&#xff0c;诸子云北京分会研讨会活动—网络安全攻防对抗在北京成功举办。 作为国内云原生安全领导厂商&#xff0c;安全狗也参与此次活动。 厦门服云信息科技有限公司&#xff08;品牌名&#xff1a;安全狗&#xff09;成立于2013年&#xff0c;致力于提供云安全、&…

Scenario Runner (CARLA)

1. How to run scenarios —Type 2. How to run scenarios —Functionalities

系统提权与数据窃取

系统提权与数据窃取 一、后渗透二、后渗透的技术2.1、提权2.2、横向移动2.3、持久化2.4、数据窃取2.5、漏洞利用 三、meterpreter后渗透3.1、靶机权限提升3.1.1、windows内核/服务漏洞3.1.2、bypassUAC3.1.2.1、bypassuac 进程注入3.1.2.2、bypassuac_injection 内存注入3.1.2.…

Android Studio实现内容丰富的安卓医院医生招聘平台

如需源码可以添加q-------3290510686&#xff0c;也有演示视频演示具体功能&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动。 项目编号120 1.开发环境 android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.查看公告 3.查…

软件设计师(九)数据库技术基础

数据库技术是研究数据库的结构、存储、设计、管理和应用的一门软件学科 一、基本概念 1、数据库和数据库系统 数据库系统&#xff08;DataBase System&#xff0c;DBS&#xff09;是一个采用了数据库技术&#xff0c;有组织地、动态地存储大量数据&#xff0c;方便多用户访问…

公众号授权登录h5

公众号授权登录h5 . 前几天一个月薪35k的兄弟&#xff0c;给我推了一个人工智能学习网站&#xff0c;看了一段时间挺有意思的。包括语音识别、机器翻译等从基础到实战都有&#xff0c;很详细&#xff0c;分享给大家。大家及时保存&#xff0c;说不定啥时候就没了。 . 步骤 …

认识JavaScript

大家好,今天我们来认识一下JavaScript相关内容 目录 &#x1f437;1.JavaScript是什么&#x1f437;2.JavaScript发展史&#x1f437;3.JavaScript 和 HTML 和 CSS 之间的关系&#x1f437;4.JavaScript 运行过程&#x1f437;5.JavaScript 的组成&#x1f437;6.用JavaScript写…

JavaScript 实现一键复制(id,账号)

文章目录 HTML准备JavaScript 逻辑css 在前端有很多的时候需要一键复制账号&#xff0c;密码等&#xff0c;比如QQ的复制QQ账号&#xff0c;一些程序应用的个人信息页&#xff0c;都会有一键复制这个功能&#xff0c;下面给大家分享一下一键复制的实现方法 HTML准备 先提前准备…

【Linux修炼】开发工具使用

&#x1f307;个人主页&#xff1a;平凡的小苏 &#x1f4da;学习格言&#xff1a;命运给你一个低的起点&#xff0c;是想看你精彩的翻盘&#xff0c;而不是让你自甘堕落&#xff0c;脚下的路虽然难走&#xff0c;但我还能走&#xff0c;比起向阳而生&#xff0c;我更想尝试逆风…

计算机丢失msvcr110.dll是什么意思?那个修复方法更简单

Windows系统的电脑运行一段时间&#xff0c;总是不可避免出现一些系统报错&#xff0c;比如在运行游戏或游戏的时候&#xff0c;报错提示“计算机丢失msvcr110.dll”&#xff0c;“找不到msvcr110.dll”是什么意思呢&#xff1f;我是运行photoshop的时候报错的&#xff0c;场景…

Paddle:SSLD 知识蒸馏实战

SSLD 知识蒸馏实战 论文&#xff1a;https://arxiv.org/abs/2103.05959 1. 算法介绍 1.1 简介 PaddleClas 融合已有的知识蒸馏方法 [2,3]&#xff0c;提供了一种简单的半监督标签知识蒸馏方案(SSLD&#xff0c;Simple Semi-supervised Label Distillation)&#xff0c;基于 I…

如何解释商业智能BI?商业智能BI未来的发展趋势?

商业智能BI能够成为当前商业世界中备受企业欢迎的数据类技术解决方案其实是有原因的&#xff0c;早在1958年&#xff0c;IBM研究员就将商业智能BI的早期形态定义为&#xff1a;“对事物相互关系的一种理解能力&#xff0c;并依靠这种能力去指导决策&#xff0c;以达到预期的目标…

【Python】正则表达式匹配大部分Url

正则表达式&#xff1a; r’(\w://)?(\w)(.\w).(\w)(/\w)(.\w)?(?(\w\w)(&\w\w))?’ 解释&#xff1a;

World macheine和Houdini这两个软件在游戏地形制作中如何选择?

本文仅针对“World macheine和Houdini这两个软件在游戏地形制作中如何选择&#xff1f;”做出回答。 简单介绍 World Machine&#xff1a; World Machine是一款专业的地形生成软件。它提供了一套强大的工具和节点系统&#xff0c;用于创建高度图和地形。World Machine可以帮助…

opencv使用applyColorMap()函数,可以将灰度图或彩色图转换成自定义的彩色图,或opencv提供的20多种色彩值

文章目录 1、applyColorMap()函数的使用&#xff1a;&#xff08;1&#xff09;函数原型&#xff1a;void applyColorMap(InputArray src, OutputArray dst, int colormap)void applyColorMap(InputArray src, OutputArray dst, InputArray userColor) &#xff08;2&#xff0…

PMP证书为什么可以不用考试就可以获得CSPM二级证书?

一、PMP证书介绍 PMP是指项目管理专业人士&#xff08;Project Management Professional&#xff09;&#xff0c;是国际上公认的项目管理领域的权威认证。PMP认证由美国项目管理协会&#xff08;PMI&#xff09;颁发&#xff0c;是全球范围内最具权威性、最受认可的项目管理专…

Jmeter使用之:怎么编写扩展函数(一)

目录 前言&#xff1a; 1、首先编写我们的java类&#xff0c;如具体代码如下&#xff1a; 2、使用eclipse把java导出成jar包&#xff0c;如timetool.jar。 3、Jmeter 测试计划底部的library找到timetool.jar&#xff0c;导入进去。 4、在Jmeter测试计划下新建线程组&#…

咨询第三方软件测试机构报价时,软件企业应该准备什么?

随着软件行业的快速发展&#xff0c;软件企业也面临着越来越大的市场竞争压力。为了确保软件产品的质量和稳定性&#xff0c;许多企业开始选择外包软件测试服务。然而&#xff0c;在咨询第三方软件测试机构报价之前&#xff0c;软件企业需要做好一些准备工作&#xff0c;以获得…