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

目录

一、需求

二、最后成果展示

三、思路和方法

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

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

3.3 vue data中定义

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

3.5 开始方法

3.6 暂停方法

3.7 销毁监控方法


一、需求

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

二、最后成果展示

插件下载地址: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", // 指定容器idiServicePortStart: 15900, // 指定起止端口号,建议使用该值iServicePortEnd: 15900,szClassId: "用于IE10使用ActiveX的clsid", // 用于IE10使用ActiveX的clsidcbConnectSuccess: 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 = trueconsole.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协议,默认443var snapDir = "D:\\SnapDir"; //抓图存储路径var videoDir = "D:\\VideoDir"; //紧急录像或录像剪辑存储路径var layout = "1x1"; //playMode指定模式的布局var enableHTTPS = 1; //是否启用HTTPS协议与综合安防管理平台交互,这里总是填1var encryptedFields = "secret"; //加密字段,默认加密领域为secretvar 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网关提供的appkeysecret: secret, //API网关提供的secretip: 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-TCPvar 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.hqwc.cn/news/16134.html

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

相关文章

苹果手机怎么设置日程安排提醒闹钟?简单几步

在忙碌的工作和生活中&#xff0c;我们经常会忘记重要的约会、会议和任务。这时候&#xff0c;一个可靠的日程提醒闹钟就显得尤为重要了。通过在手机上设置日程安排提醒闹钟&#xff0c;让我们不再错过任何重要的事情。 那么苹果手机怎么设置日程安排提醒闹钟&#xff1f; 敬…

HarmonyOS学习路之开发篇—流转

流转概述 介绍 随着全场景多设备生活方式的不断深入&#xff0c;用户拥有的设备越来越多&#xff0c;每个设备都能在适合的场景下提供良好的体验&#xff0c;例如&#xff1a;手表可以提供及时的信息查看能力&#xff0c;电视可以带来沉浸的观影体验。但是&#xff0c;每个设备…

【如何在深度学习的道路上越走越远?】

作为近几年人工智能领域的主要研究方向之一&#xff0c;深度学习主要通过构建深度卷积神经网络和采用大量样本数据作为输入&#xff0c;最终得到-一个具有强大分析能力和识别能力的模型。深度学习可以是有监督的、半监督的或无监督的。深度学习架构(例如深度神经网络、深度信念…

【设计模式】第二十一章:命令模式详解及应用案例

系列文章 【设计模式】七大设计原则 【设计模式】第一章&#xff1a;单例模式 【设计模式】第二章&#xff1a;工厂模式 【设计模式】第三章&#xff1a;建造者模式 【设计模式】第四章&#xff1a;原型模式 【设计模式】第五章&#xff1a;适配器模式 【设计模式】第六章&…

Android OpenGL ES 学习(十三) -离屏渲染FBO(截图)RBO, OES转 FBO

Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学习(三) – 绘制平面图形 Android OpenGL ES 学习(四) – 正交投屏 Android OpenGL ES 学习(五) – 渐变色 Android OpenGL ES 学习(六) – 使用 VBO、VAO 和 EB…

2.SpringBoot集成Swagger

1.添加依赖 <!--添加Swagger依赖 --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version></dependency><!--添加Swagger-UI依赖 --><dependenc…

TortoiseGit 入门指南02:创建和克隆仓库

图标 本节讲解如何使用 TortoiseGit 创建和克隆仓库。但在此之前&#xff0c;我们先来看下 TortoiseGit 软件的一个特色&#xff1a;图标。 TortoiseGit 会给 工作区 中的文件和文件夹叠加图标&#xff08;Icon Overlays&#xff09;&#xff0c;图标反应的是这些文件和文件夹…

2023黑马头条.微服务项目.跟学笔记(三)

2023黑马头条.微服务项目.跟学笔记 三 自媒体文章发布1.自媒体前后端搭建1.1 后台搭建1.2 前台搭建 2.自媒体素材管理2.1 素材上传2.2.1 需求分析2.2.2 素材管理-图片上传-表结构2.2.3 实现思路2.2.4 接口定义2.2.5 自媒体微服务集成heima-file-starter2.2.6 具体实现 2.2 素材…

ARMv8的异常等级(Exception Level)以及执行状态(AArch64/AArch32)

目录 1&#xff0c;异常等级&#xff08;Exception Level&#xff09; 2&#xff0c;Execution states&#xff0c;执行状态 AArch64的异常等级 AArch32的异常等级 3&#xff0c;异常等级切换 4&#xff0c;执行状态切换&#xff08;AArch64 <> AArch32&#xff09;…

【QT】QT搭建OpenCV环境

QT/OpenCV 01、开始之前02、QT03、CMake04、OpenCV05、配置06、测试 01、开始之前 本文版本&#xff1a; 1、QT&#xff1a;Based on Qt 5.12.2 (MSVC 2017, 32 bit)&#xff0c;编译方式是MinGW 2、CMake&#xff1a;cmake-3.27.0-rc4-windows-x86_64.msi 3、OpenCV&#xff1…

CSS 制作动态蚂蚁线

效果&#xff1a; 代码&#xff1a; <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> <style type"text/css"> .line{position:relative;margin-bottom: 5px;width: 1200px;height: …

Django系列所有漏洞复现vulhubCVE-2018-14574,CVE-2022-34265,CVE-2021-35042

文章目录 Django < 2.0.8 任意URL跳转漏洞&#xff08;CVE-2018-14574&#xff09;漏洞详情&#xff1a;复现&#xff1a; Django Trunc(kind) and Extract(lookup_name) SQL注入漏洞&#xff08;CVE-2022-34265&#xff09;漏洞详情&#xff1a;复现&#xff1a; Django Qu…