当前位置:首页 » 《关于电脑》 » 正文

Vue 海康监控多屏幕展示 WebVideoCtrl 3.3.0

0 人参与  2024年04月11日 08:50  分类 : 《关于电脑》  评论

点击全文阅读


将WebVideoCtrl.js  和jquery 引入index.html 中

封装一个WebVideo.js
 

import $ from "jquery";const WebVideo = {  g_iWndIndex: 0, //可以不用设置这个变量,有窗口参数的接口中,不用传值,开发包会默认使用当前选择窗口  g_oLocalConfig: null, //本地配置  ERROR_CODE_UNKNOWN: 1000, //未知错误  ERROR_CODE_NETWORKERROR: 1001, //网络错误  ERROR_CODE_PARAMERROR: 1002,  //登录模块  ERROR_CODE_LOGIN_NOLOGIN: 2000, // 未登录  ERROR_CODE_LOGIN_REPEATLOGIN: 2001, //设备已登录,重复登录  ERROR_CODE_LOGIN_NOSUPPORT: 2002, //当前设备不支持Digest登录  //预览播放  ERROR_CODE_PLAY_PLUGININITFAIL: 3000, //插件初始化失败  ERROR_CODE_PLAY_NOREPEATPLAY: 3001, //当前窗口已经在预览  ERROR_CODE_PLAY_PLAYBACKABNORMAL: 3002, //回放异常  ERROR_CODE_PLAY_PLAYBACKSTOP: 3003, //回放停止  ERROR_CODE_PLAY_NOFREESPACE: 3004, //录像过程中,硬盘容量不足  // 对讲  ERROR_CODE_TALK_FAIL: 5000, //语音对讲失败  version: 'V3.3.0build20230322',  init: function (options) {    let that = this;    return new Promise((resolve, reject) => {      WebVideoCtrl.I_InitPlugin({        bWndFull: true, //是否支持单窗口双击全屏,默认支持 true:支持 false:不支持        iWndowType: options.iWndowType,        cbInitPluginComplete: function () {          console.log(options.domId);            WebVideoCtrl.I_InsertOBJECTPlugin(options.domId).then(() => {              // 检查插件是否最新              WebVideoCtrl.I_CheckPluginVersion().then((bFlag) => {                if (bFlag) {                  console.log("检测到新的插件版本,双击开发包目录里的HCWebSDKPlugin.exe升级!");                }              });            }, () => {              console.log("插件初始化失败,请确认是否已安装插件;如果未安装,请双击开发包目录里的HCWebSDKPlugin.exe安装!");            });          resolve();          console.log('初始化成功')        }      })    })  },  // 停止预览  I_StopAllPlay(){    WebVideoCtrl.I_StopAllPlay();  },  clickLogout(ip) {    return new Promise((resolve,reject) => {      var szDeviceIdentify = ip;      if (null == szDeviceIdentify) {        return;      }      WebVideoCtrl.I_Logout(szDeviceIdentify).then(() => {        console.log(szDeviceIdentify + " " + "退出成功!");        resolve();      }, () => {        console.log(szDeviceIdentify + " " + "退出失败!");      });    })  },  I_DestroyPlugin:function(){    WebVideoCtrl.I_DestroyPlugin()  },  clickLogin: function (options) {    return new Promise((resolve, reject) => {      var szIP =  options.ip,        szPort = options.port,        szUsername = options.username,        szPassword = options.password;      if ("" == szIP || "" == szPort) {        return;      }      var szDeviceIdentify = szIP + "_" + szPort;      WebVideoCtrl.I_Login(szIP, 1, szPort, szUsername, szPassword, {        timeout: 3000,        success: function (xmlDoc) {          console.log(szDeviceIdentify + " 登录成功!")          resolve();          WebVideo.ip = szDeviceIdentify;        },        error: function (oError) {          if (WebVideo.ERROR_CODE_LOGIN_REPEATLOGIN === oError.errorCode) {            console.log(szDeviceIdentify + " 已登录过!")          } else {            console.log(szDeviceIdentify + " 登录失败!")            // showOPInfo(szDeviceIdentify + " 登录失败!", oError.errorCode, oError.errorMsg);          }        }      });    })  },  clickStopRealPlay() {    var oWndInfo = WebVideoCtrl.I_GetWindowStatus(0),      szInfo = "";    console.log(oWndInfo,'这是什么')    return    if (oWndInfo != null) {      WebVideoCtrl.I_Stop({        success: function() {          szInfo = "停止预览成功!";          console.log(oWndInfo.szDeviceIdentify + " " + szInfo);        },        error: function(oError) {          console.log(szDeviceIdentify + " 停止预览失败!", oError.errorCode, oError.errorMsg);        }      });    }  },  clickStartRealPlay: function (iStreamType,iChannelID,iWndIndex) {    return new Promise((resolve, reject) => {      var oWndInfo = WebVideoCtrl.I_GetWindowStatus(WebVideo.g_iWndIndex),        szDeviceIdentify = WebVideo.ip,        iRtspPort = parseInt($("#rtspport").val(), 10),        iChannelID = parseInt($("#channels").val(), 10),        szInfo = "";      if ("undefined" === typeof iStreamType) {        iStreamType = 1;      }      if (null == szDeviceIdentify) {        return;      }      var startRealPlay = function () {        WebVideoCtrl.I_StartRealPlay(szDeviceIdentify, {          iStreamType:iStreamType,          iChannelID: WebVideo.iChannelID ? WebVideo.iChannelID : 1,          iWndIndex:iWndIndex ? iWndIndex : '',          success: function () {            szInfo = "开始预览成功!";            console.log(szDeviceIdentify + " " + szInfo);            resolve()          },          error: function (oError) {            console.log(szDeviceIdentify + " 开始预览失败!", oError.errorCode, oError.errorMsg);          }        });      };      if (oWndInfo != null) { // 已经在播放了,先停止        WebVideoCtrl.I_Stop({          success: function () {            startRealPlay();          }        });      } else {        startRealPlay();      }    })  }}export default WebVideo

页面中使用
 

<template><div>    <div :id="'divPlugin' + index" v-for="(item,index) in list" :key="index" class="plugin" style="width: 600px;height: 400px;float: left"></div></div></template><script>import WebVideo from "../assets/WebVideo";export default {data() {return {        list:[          {            ip:'',            port:8888,            username:'',            password:''          },          {            ip:'',            port:8999,            username:'',            password:''          }        ]}},created() {      this.initLogin();},methods: {      VideoPlayers(domId,options){        return new Promise((resolve,reject) => {          WebVideo.init({            domId:domId          }).then(() => {            setTimeout(() => {              WebVideo.clickLogin(options).then(res => {                WebVideo.clickStartRealPlay();                resolve();              })            },1000)          })        })      },      async initLogin(){        for(var i = 0; i < this.list.length; i++){          await this.VideoPlayers('divPlugin' + i,this.list[i])        }      },}}</script><style></style>

单个屏幕多个ip

<template>  <div><!--        <div    :id="'divPlugin' + index" v-for="(item,index) in list" :key="index" class="plugin" style="width: 600px;height: 400px;float: left"></div>-->    <div id="divPlugin" class="plugin" style="width: 600px;height: 400px;"></div>    <button @click="refreshCom">停止预览</button>    <button @click="initLogin">登录</button>    <div @click-="unLogin()">退出11</div>    <div style="height: 1000px"></div>  </div></template><script>import WebVideo from "../assets/WebVideo";export default {  data() {    return {      list: []    }  },  created() {    // this.initPlugin();    this.initLogin();    },  methods: {    refreshCom() {     this.unLogin()      WebVideo.I_DestroyPlugin();    },    async unLogin() {      for (var i = 0; i < this.list.length; i++) {        await WebVideo.clickLogout(this.list[i].ip + '_' + this.list[i].port).then(res => {          console.log('退出成功')        });      }    },    VideoPlayers(domId,options){      return new Promise((resolve,reject) => {        WebVideo.init({          domId:domId        }).then(() => {          setTimeout(() => {            WebVideo.clickLogin(options).then(res => {              WebVideo.clickStartRealPlay();              resolve();            })          },1000)        })      })    },    clickStopRealPlay() {      WebVideo.clickStopRealPlay();    },    async initPlugin() {      for(var i = 0; i < this.list.length;i++){       await this.VideoPlayers('divPlugin' + i,this.list[i])      }    },    initLogin() {      let that = this;      WebVideo.init({        domId: 'divPlugin',        iWndowType:2      }).then(() => {        setTimeout(() => {          for (var i = 0; i < that.list.length; i++) {            let index = i;            WebVideo.clickLogin(that.list[i]).then(() => {              WebVideo.clickStartRealPlay(1, 1, index)            })          }        }, 1000)      })      // for(var i = 0; i < this.list.length; i++){      //   await this.VideoPlayers('divPlugin' + i, this.list[i])      // }      // setTimeout(() => {      //   this.unLogin();      // },1000)    },  }}</script><style>.clear {  clear: both;}</style>


点击全文阅读


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

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

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

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

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