vue+播放rtsp流视频监控

vue+播放rtsp流视频监控-海康摄像头

  • 使用工具vue+jsencrypt+jsWebControl
  • 思路
    • 解决办法1:弹出新页面vue代码
    • 解决办法2:采用组建的方式

使用工具vue+jsencrypt+jsWebControl

注:使用海康demo,下载地址:https://open.hikvision.com/download/5c67f20bb254d61550c2f63e?type=10
需要注册,登录。
在这里插入图片描述

思路

基于海康demo,在vue上实现,剔除了海康demo的jquery。
vue直接引入jsWebControl会报错!!!直接在index.html里面引入js

  <script src="js/videojs-contrib-hls.min.js"></script><script src="js/jsencrypt.min.js"></script>

解决办法1:弹出新页面vue代码

刚开始将视频窗体放在dialog里面,发现无法关闭窗体,也找不到元素。最终选择 window.open方式弹出新窗体,解决的朋友可以留言。

<template><div class="webControl"><!--视频窗口展示--><div id="playWnd" class="playWnd" style="left: 109px; top: 133px;"><span v-if="loading">插件未启动,正在尝试启动,请稍候...</span></div></div>
</template><script>
export default {name: 'webControl',data: function() {return {loading: false,initCount: 0,pubKey: '',oWebControl: null,id: '',message: {ip: '',port: '',appkey: '',secret: '' }}},async mounted() {this.id = this.getQueryString('name')let res = await this.$http.get('’)//从接口请求得到所需要的ip,port,appkey,secretif (res.code == 0) {this.message = res.data} else {this.$message.error('获取数据失败: ' + res.message)}this.initPlugin()},methods: {//获取路由参数getQueryString(name) {var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i')var r = window.location.search.substr(1).match(reg)if (r != null) return decodeURI(r[2])return null},//预览handelShow() {let that = thisvar cameraIndexCode = this.id //获取输入的监控点编号值,必填var streamMode = 0 //主子码流标识:0-主码流,1-子码流var transMode = 1 //传输协议:0-UDP,1-TCPvar gpuMode = 0 //是否启用GPU硬解,0-不启用,1-启用var wndId = -1 //播放窗口序号(在2x2以上布局下可指定播放窗口)cameraIndexCode = cameraIndexCode.replace(/(^\s*)/g, '')cameraIndexCode = cameraIndexCode.replace(/(\s*$)/g, '')that.oWebControl.JS_RequestInterface({funcName: 'startPreview',argument: JSON.stringify({cameraIndexCode: cameraIndexCode, //监控点编号streamMode: streamMode, //主子码流标识transMode: transMode, //传输协议gpuMode: gpuMode, //是否开启GPU硬解wndId: wndId //可指定播放窗口})})},// 创建播放实例initPlugin() {let that = this// eslint-disable-next-line no-undefthat.oWebControl = new WebControl({szPluginContainer: 'playWnd', // 指定容器idiServicePortStart: 15900, // 指定起止端口号,建议使用该值iServicePortEnd: 15909,szClassId: '23BF3B0A-2C56-4D97-9C03-0CB103AA8F11', // 用于IE10使用ActiveX的clsidcbConnectSuccess: function() {console.log('插件启动成功')this.loading = false// 创建WebControl实例成功that.oWebControl.JS_StartService('window', {// WebControl实例创建成功后需要启动服务dllPath: './VideoPluginConnect.dll' // 值"./VideoPluginConnect.dll"写死}).then(function() {// 启动插件服务成功that.oWebControl.JS_SetWindowControlCallback({// 设置消息回调cbIntegrationCallBack: that.cbIntegrationCallBack})that.oWebControl.JS_CreateWnd('playWnd', 1000, 600).then(function() {//JS_CreateWnd创建视频播放窗口,宽高可设定that.init() // 创建播放实例成功后初始化})},function() {// 启动插件服务失败})},cbConnectError: function() {// 创建WebControl实例失败that.oWebControl = nullthis.loading = true// eslint-disable-next-line no-undefWebControl.JS_WakeUp('VideoWebPlugin://') // 程序未启动时执行error函数,采用wakeup来启动程序that.initCount++if (that.initCount < 3) {setTimeout(function() {that.initPlugin()}, 3000)} else {that.$confirm('插件启动失败,请检查插件是否安装!', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {location.href = `插件没有安装,则从接口下载VideoWebPlugin.exe插件`}).catch(() => {this.$message({type: 'info',message: '已取消删除'})})}},cbConnectClose: function() {// 异常断开:bNormalClose = false// JS_Disconnect正常断开:bNormalClose = truethat.oWebControl = null}})},// 推送消息cbIntegrationCallBack() {// showCBInfo(JSON.stringify(oData.responseMsg))},//初始化init() {let that = thisthis.getPubKey(function() {// 请自行修改以下变量值	var appkey = that.message.appkey//综合安防管理平台提供的appkey,必填var secret = that.setEncrypt(that.message.secret) //综合安防管理平台提供的secret,必填var ip = that.message.ip //综合安防管理平台IP地址,必填var playMode = 0 //初始播放模式:0-预览,1-回放var port = that.message.port //综合安防管理平台端口,若启用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() {that.oWebControl.JS_Resize(1000, 600) // 初始化后resize一次,规避firefox下首次显示窗口后插件窗口未与DIV窗口重合问题that.handelShow()})})},//获取公钥getPubKey(callback) {let that = thisthat.oWebControl.JS_RequestInterface({funcName: 'getRSAPubKey',argument: JSON.stringify({keyLength: 1024})}).then(function(oData) {if (oData.responseMsg.data) {that.pubKey = oData.responseMsg.datacallback()}})},//RSA加密setEncrypt(value) {let that = this// eslint-disable-next-line no-undefvar encrypt = new JSEncrypt()encrypt.setPublicKey(that.pubKey)return encrypt.encrypt(value)}}
}
</script><style scoped>
.playWnd {margin: 30px 0 0 400px;width: 1000px;/*播放容器的宽和高设定*/height: 600px;
}
</style>

解决办法2:采用组建的方式

采用组件引用方式,惊喜的发现这种方式初始化时不需要过setWndCover修改定位,销毁组件使用JS_DestroyWnd,切换视频时先通过stopAllPreview停止所有预览,再次startPreview预览

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

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

相关文章

时光手帐如何打印 时光手帐打印的方法

1、如果你想要来打印自己制作的手帐&#xff0c;那么就需要先点击进入个人页面&#xff0c;然后在右上方选择“打印”选项来进入打印商城中。 时光手帐如何打印 时光手帐打印的方法 2、接下来需要在打印商城里选择店铺进行打印服务&#xff0c;点击进入店铺中选择“打印”功能…

element el-tree 懒加载 默认展开第二层

思路 在el-tree 执行load时&#xff0c;保存节点。调用loadData方法 代码 <el-tree node-key"id" lazy :load"loadNode" />data() {return {chooseNode: {},//当前选中节点}},mounted() {this.$nextTick(() > {//调用loadData方法展开第二层…

腾讯视频app怎么允许腾讯视频访问位置信息

1、首先&#xff0c;打开一个的腾讯视频的界面当中&#xff0c;点击右下角中的 个人中心 的选项 怎么下载完整版腾讯视频到桌面_腾讯视频app怎么允许腾讯视频访问位置信息 2、点击了个人中心 的选项之后&#xff0c;点击列表中的 设置 的选项 怎么下载完整版腾讯视频到桌面_…

element el-tree懒加载+搜索

思路 在el-tree 懒加载不兼容自带的查询&#xff0c;需要自己实现。 代码 <el-input clearable keyup.native.enter"handelSearch" size"small" v-model"search"> </el-input><el-tree :data"treeDataShow" ref“tr…

谷歌浏览器怎么打开开发者模式 谷歌浏览器打开开发者模式的方法

首先打开手机中的谷歌浏览器&#xff0c;然后点击右上角的图标; 谷歌浏览器怎么打开开发者模式&#xff1f;谷歌浏览器打开开发者模式的方法[多图] 选择更多工具里面的开发者工具; 谷歌浏览器怎么打开开发者模式&#xff1f;谷歌浏览器打开开发者模式的方法[多图] 然后就打…

浏览器播放rtmp

rtmp播放 文章目录rtmp播放1、rtmp测试路径地址2、video.js播放rtmp3、ezuikit播放rtmp1、rtmp测试路径地址 https://www.cnblogs.com/yeminglong/p/14704789.html 2、video.js播放rtmp 注意&#xff1a; 1.如果写在html本地运行&#xff0c;请使用http-server启动&#xff…

知识星球如何升级为正式星球 知识星球怎么创建星球

打开知识星球&#xff0c;然后我们进入到星球界面&#xff0c;再点击创建星球。 知识星球如何升级为正式星球 知识星球怎么创建星球听语音 接着进入到创建界面&#xff0c;我们输入星球名字等信息&#xff0c;再点击下一步。 知识星球如何升级为正式星球 知识星球怎么创建星…

网页打开微信公众号关注界面

代码 <a href"https://mp.weixin.qq.com/mp/profile_ext?actionhome&__biz微信公众号biz号码&scene110#wechat_redirect">进入公众号</a>例如&#xff1a;<a href"https://mp.weixin.qq.com/mp/profile_ext?actionhome&__bizMjgz…

Win7旗舰版打不开任务管理器怎么办

在电脑使用过程中&#xff0c;某些应用程序卡住无响应时&#xff0c;任务管理器能够帮我们很好地关闭未响应的程序。但如果Win7旗舰版系统打不开任务管理器&#xff0c;我们该该如何解决?下面就给大家分享一下Win7打不开任务管理器的解决方法。 Win7旗舰版打不开任务管理器怎…

vant+cell+picker+级联选择默认选中

文章目录一、代码示例-父组件调用二、代码示例-子组件总结一、代码示例-父组件调用 <myCellTree v-model"test" title"测试"></myCellTree>二、代码示例-子组件 /* vant2.8.1暂时只支持二级联动&#xff0c;更多的没有测试注意:defaultIndex…

大地win11 64位旗舰版系统v2021.08

大地win11 64位旗舰版系统v2021.08是一款非常稳定的电脑操作系统&#xff0c;集成多个针对系统用户优化的补丁&#xff0c;且无需输入相关的序列号等&#xff0c;可以完美激活合法权益&#xff0c;感兴趣的用户们就快来下载使用该系统吧。 大地win11 64位旗舰版系统v2021.08 …

Surely Vue-去除水印

解决水印问题 let domArr document.getElementsByTagName(div)for (let i 0; i < domArr.length; i) {if ([Unlicensed Product].includes(domArr[i].innerText)) {domArr[i].remove()}if ([Powered by Surely Vue].includes(domArr[i].innerText)) {domArr[i].style.opac…

番茄花园win11 32位专业版镜像v2021.08

番茄花园win11 32位专业版镜像v2021.08是一款非常好用的操作系统&#xff0c;这款系统在稳定性上进一步优化和提升&#xff0c;可以更好的获得整个纯版系统的稳定性&#xff0c;系统中的功能十分的强大&#xff0c;能够智能判断出电脑的型号&#xff0c;然后为广大用户们安装相…

钉钉怎么查看收到的文件 钉钉查看文件的方法

钉钉可以收发文件&#xff0c;如果收到一份文件&#xff0c;该怎么打开查看内容呢?下面我们就来看看详细钉钉查看文件的教程。 1、打开聊天窗口&#xff0c;点击工具栏上面的“文件夹”发送文件图标。 钉钉怎么查看收到的文件? 钉钉查看文件的方法 2、分别可以发送本地文件…

360天气怎么设置方法 360天气如何设置城市

1.首先打开我们的360天气APP&#xff0c;在主页左上方找到一个小加号的图标&#xff0c;如下图所示。 360天气怎么设置方法 360天气如何设置城市 2.点击加号后&#xff0c;我们便可以进入城市管理界面了&#xff0c;现在我们需要继续点击屏幕中的【】功能&#xff0c;以此来开…

手机优酷怎么删除自己发的弹幕

1.手机上&#xff0c;打开优酷app&#xff0c;点击右下角“我的” 手机优酷怎么删除自己发的弹幕&#xff1f; 2.点击个人头像 手机优酷怎么删除自己发的弹幕&#xff1f; 3.个人资料下方&#xff0c;就能看到自己以前发过的弹幕 手机优酷怎么删除自己发的弹幕&#xff1f…

Win11语音助手怎么开启 Win11语音助手开启的方法

自从Win10系统内置cortana小娜开始&#xff0c;就有很多用户非常喜欢这个AI人工智能&#xff0c;而不少小伙伴在更新的到Win11的系统之后也想使用语音助手却不知道如何开启&#xff0c;下面就和小编一起来看看应该怎么操作吧。 Win11语音助手开启的方法 1、首先我们点击任务栏…

腾讯视频怎样开启深色模式保护眼睛

1、点击打开腾讯视频软件&#xff0c;如图; 腾讯视频怎样开启深色模式保护眼睛 2、然后在软件首页点击【个人中心】&#xff0c;如图; 腾讯视频怎样开启深色模式保护眼睛 3、进入【个人中心】界面&#xff0c;往下滑找到【设置】选项点击&#xff0c;如图; 腾讯视频怎样开…

物联网协议比较 MQTT CoAP RESTful/HTTP XMPP

物联网协议 ProtocolCoAPXMPPRESTful HTTPMQTTTransportUDPTCPTCPTCPMessagingRequest/ResponsePublish/Subscribe Request/ResponseRequest/ResponsePublish/Subscribe Request/Response2G, 3G, 4G Suitability (1000s nodes)ExcellentExcellentExcellentExcellentLLN Suitab…

Windows平台如何查看一个dll依赖的其他dll

好多开发者在做windows开发的时候&#xff0c;容易遇到dll依赖的问题&#xff0c;VS自带一个小工具dumpbin, 这个工具挺好用&#xff0c;可以查看dll相关依赖库&#xff0c;还可以看dll导出接口。 下面演示下查依赖库用法: 运行 dumpbin /dependents nm.exe 输出&#xff1a…