vue对接海康摄像头,配合ifarme进行展示。给ifarme点击事件(消除ifarme事件,因为ifarme没有点击事件)

这篇具有很好参考价值的文章主要介绍了vue对接海康摄像头,配合ifarme进行展示。给ifarme点击事件(消除ifarme事件,因为ifarme没有点击事件)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、在public文件夹下建一个文件ifarme.index,和index.html同级。

<!doctype html>
<html>

<head>
  <title></title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta http-equiv="Pragma" content="no-cache" />
  <meta http-equiv="Cache-Control" content="no-cache, must-revalidate" />
  <meta http-equiv="Expires" content="0" />
</head>
<style type="text/css">
  html,
  body {
    margin: 0;
    padding: 0;
    border: 0;
  }

  .plugin {
    width: 450px;
    height: 240px;
  }
</style>

<body>
  <div id="divPlugin" class="plugin"></div>
</body>
<script type="text/javascript" src="static/hik_video/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="static/hik_video/jsPlugin-1.2.0.min.js"></script>
<script type="text/javascript" src="static/hik_video/AES.js"></script>
<script type="text/javascript" src="static/hik_video/cryptico.min.js"></script>
<script type="text/javascript" src="static/hik_video/crypto-3.1.2.min.js"></script>
<script id="videonode" type="text/javascript" src="static/hik_video/webVideoCtrl.js"></script>
<!-- 
<script src="./static/hkVideoPlayer/jquery-1.7.1.min.js"></script>
<script src="./static/hkVideoPlayer/jsVideoPlugin-1.0.0.min.js"></script>
<script id="videonode" src="./static/hkVideoPlayer/webVideoCtrl.js"></script> -->
<script>
  // 向父vue页面发送信息
  console.log(window, 'window');
  window.parent.postMessage({
    cmd: 'run',
    params: {
      success: true
    }
  }, '*');
  // 接受父页面发来的信息
  window.addEventListener("message", function (event) {
    console.log(event, 'event');
    var data = event.data;
    switch (data.cmd) {
      case 'getFormJson':
        // 处理业务逻辑
        companyVideoData = data.params;
        cameraName = data.name;
        videoInitPlugin()
        break;
    }
  });
  var companyVideoData = {};
  var cameraName = '';
  // 接受父页面发来的信息
  function videoInitPlugin() {
    var iRet = WebVideoCtrl.I_CheckPluginInstall();
    if (iRet === -1) {
      alert("您还未安装过插件,请安装WebComponentsKit.exe插件!");
      return;
    }
    initPlugin();
  }
  //插件初始化
  // iWndowType,目前只支持1、4、9、16四种画面分割模式),每一个子窗口对应一个窗口序号;
  // I_Login登录接口代码直接传入设备IP、端口、用户密码,这样可以不需要用户手动输入;I_StartRealPlay预览接口直接传入窗口号、通道号。
  function initPlugin() {
    var that = this;
    WebVideoCtrl.I_InitPlugin(500, 300, {
      szContainerID: 'divPlugin',
      iPackageType: 2,
      szColorProperty: "plugin-background:ffffff; sub-background:ffffff; sub-border:ffffff; sub-border-select:ffffff",
      szColorProperty: 'sub-border: 00ffff',
      bNoPlugin: true,
      bWndFull: true, //是否支持单窗口双击全屏,默I_CheckPluginInstall
      iWndowType: 1, // 窗口数量n*n
      // bDebugMode: true,
      cbSelWnd: function (xmlDoc) {
      },
    });
    // WebVideoCtrl.I_StartRealPlay(companyVideoData.IP, {
    //   iWndIndex: 1,   // iWndIndex窗口序号从0开始(比如4画面分割,从左往右、从上往下,窗口序号分别为0、1、2、3),没有该字段表示当前选中窗口(需要手动选择窗口)。
    //   iStreamType: 1, // 码流类型 1-主码流,2-子码流,默认使用主码流预览
    //   iChannelID: 2,  // 播放通道号,默认通道 1
    //   bZeroChannel: false,  // 是否播放零通道,默认为 false
    //   // iPort: RTSP 端口号,可以选择传入,如果不传,开发包会自动判断设备的RTSP端口
    //   success: function () {
    //     console.log("开始预览成功!success", companyVideoData.IP);
    //   },
    // });
    // 绑定的dom名称
    WebVideoCtrl.I_InsertOBJECTPlugin('divPlugin');
    clickLogin(companyVideoData);
  }
  function clickLogin(data) {
    var szDeviceIdentify = data.IP + "_" + data.Port;
    console.log('data', data);
    var that = this;
    WebVideoCtrl.I_Login(data.IP, 1, data.Port, data.Username, data.Password, {
      timeout: 3000,
      success: function (xmlDoc) {
        console.log(szDeviceIdentify + " 登录成功!");
        // $("#ip").prepend("<option value='" + szDeviceIdentify + "'>" + szDeviceIdentify + "</option>");
        setTimeout(function () {
          $("#ip").val(szDeviceIdentify);
          setTimeout(function () {
            that.getChannelInfo();
          }, 1000);
          that.getDevicePort();
        }, 10);
      },
      error: function (oError) {
        if (2001 === status) {
          console.log(szDeviceIdentify + " 已登录过!");
        } else {
          console.log(szDeviceIdentify + " 登录失败!", oError.errorCode, oError.errorMsg);
        }
      }
    });
    // WebVideoCtrl.I_Login(
    //   data.IP,
    //   1,
    //   data.Port,
    //   data.Username,
    //   data.Password,
    //   {
    //     success: function (xmlDoc) {
    //       console.log("开始预览", that.cName); //不能删除
    //       that.getChannelInfo();
    //     },
    //     error: function (status, xmlDoc) {
    //       console.log("login error", status, xmlDoc);
    //     },
    //   }
    // );
  }
  function getDevicePort() {
    var szDeviceIdentify = companyVideoData.IP + "_" + companyVideoData.Port;

    if (null == szDeviceIdentify) {
        return;
    }

    WebVideoCtrl.I_GetDevicePort(szDeviceIdentify).then((oPort) => {
        $("#deviceport").val(oPort.iDevicePort);
        $("#rtspport").val(oPort.iRtspPort);

        showOPInfo(szDeviceIdentify + " 获取端口成功!");
    }, (oError) => {
        var szInfo = "获取端口失败!";
        console.log(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
    });
}
  //获取通道
  function getChannelInfo() {
    var that = this;
    // this.szIP = companyVideoData.IP
    // 模拟通道
    WebVideoCtrl.I_GetAnalogChannelInfo(that.companyVideoData.IP, {
      async: false,
      success: function (xmlDoc) {
        var oChannels = $(xmlDoc).find("VideoInputChannel");
        $.each(oChannels, function (i) {
          var id = $(that).find("id").eq(0).text(),
            name = $(that).find("name").eq(0).text();
          if ("" == name) {
            name = "Camera " + (i < 9 ? "0" + (i + 1) : (i + 1));
          }
          // oSel.append("<option value='" + id + "' bZero='false'>" + name + "</option>");
        });
        // nAnalogChannel = oChannels.length;
        that.initPlay();
        // 如果是红外就需要重新获取通道
        // if (that.cameraName == 'hongwai') that.initPlayred();
        console.log("获取模拟通道成功!", that.cName)
      },
      error: function () {
        console.log("获取模拟通道失败!" + WebVideoCtrl.I_GetLastError())
      },
    });
    // 数字通道
    WebVideoCtrl.I_GetDigitalChannelInfo(that.companyVideoData.IP, {
      async: false,
      success: function (xmlDoc) {
        var oChannels = $(xmlDoc).find("InputProxyChannelStatus");
        that.initPlay();
        // that.$emit("func", oChannels); //获取数字通道传给父组件
        console.log("获取数字通道成功!")
      },
      error: function () {
        WebVideoCtrl.I_GetLastError();
        console.log("获取数字通道失败!" + WebVideoCtrl.I_GetLastError())
      },
    });
    // 零通道
    WebVideoCtrl.I_GetZeroChannelInfo(that.companyVideoData.IP, {
      async: false,
      success: function (xmlDoc) {
        var oChannels = $(xmlDoc).find("ZeroVideoChannel");
        console.log("获取零通道成功!")
      },
      error: function () {
        console.log("获取零通道失败!" + WebVideoCtrl.I_GetLastError())
      },
    });
  }
  //初始化视频,为了让用户进来就可以看到视频播放
  function initPlay() {
    let szIP = companyVideoData.IP; //ip地址  
    var iStreamType = 1;
    // 目前只需要显示一个通道
    var iChannelID = parseInt(1, 10);
    WebVideoCtrl.I_StartRealPlay(szIP, {
      iStreamType: iStreamType,
      iChannelID: 1,
      iWndIndex: 0,
    });
    // WebVideoCtrl.I_ChangeWndNum(1); //分屏
  };
  // 红外还需要重新在调用一次,窗口号可以改
  /**
   * iWndIndex 窗口序号从0开始(比如4画面分割,从左往右、从上往下,窗口序号分别为0、1、2、3),没有该字段表示当前选中窗口(需要手动选择窗口)。
   * iStreamType 码流类型 1-主码流,2-子码流,默认使用主码流预览
   * iChannelID 播放通道号,默认通道 1
   * bZeroChannel 是否播放零通道,默认为 false
   * iPort: RTSP 端口号,可以选择传入,如果不传,开发包会自动判断设备的RTSP端口
  */
  function initPlayred() {
    let szIP = companyVideoData.IP; //ip地址
    var iStreamType = 1;
    // 目前只需要显示一个通道
    var iChannelID = parseInt(1, 10);
    WebVideoCtrl.I_StartRealPlay(szIP, {
      iStreamType: iStreamType,
      iChannelID: 2,
      iWndIndex: 1,
    });
    WebVideoCtrl.I_ChangeWndNum(2); //分屏
  }
  // 点击查看具体哪个监控
  function startRealPlay(oChannels) {
    let that = this;
    let szIP = companyVideoData.IP; //ip地址
    let iChannelID = oChannels; //播放通道号
    var iStreamType = 1;
    var oWndInfo = WebVideoCtrl.I_GetWindowStatus(0);
    if (oWndInfo != null) {
      // 已经在播放了,先停止
      WebVideoCtrl.I_Stop();
    }
    WebVideoCtrl.I_StartRealPlay(szIP, {
      iStreamType: iStreamType,
      iChannelID: iChannelID,
    });
  }
</script>
</html>

vue对接海康摄像头,配合ifarme进行展示。给ifarme点击事件(消除ifarme事件,因为ifarme没有点击事件)

2、写组件,我是建在了components文件夹下边。

<template>
  <div class="video-player">
    <iframe ref="iframe" class="divPlugin" :src="iframeSrc" frameborder="0" scrolling="no"></iframe>
  </div>
</template>
<script>
export default {
  props: {
    //从父组件传来的数据,IP、用户名、密码、端口号
    companyVideoData: {
      type: Object,
    },
    //分屏数量
    videoType: Number,
    // 相机名称
    cName: String
  },
  data() {
    return {
      // 分割线
      iframeWin: {},
      iframeSrc: 'iframe.html'
    };
  },
  created() { },
  mounted() {
    // this.videoInitPlugin();
    window.addEventListener('message', this.handleMessage)
    this.iframeWin = this.$refs.iframe.contentWindow;
  },
  methods: {
    async handleMessage(event) {
      const data = event.data
      switch (data.cmd) {
        case 'run':
          if (data.params.success) {
            // 调用报名方法
            await this.sendMessage()
          } else {
            console.log('视频启动失败')
          }
          break
      }
    },
    sendMessage() {
      // 外部vue向iframe内部传数据
      this.iframeWin.postMessage({
        cmd: 'getFormJson',
        name: this.cName,
        params: {
          ...this.companyVideoData
        }
      }, '*');
    }
  }
};
</script>
<style  scoped>
.video-player {
  width: 450px;
  height: 300px;
}

.divPlugin {
  width: 450px;
  height: 240px;
  color: red;
  /* display: flex; */
  background: gray;
  /* border: 1px solid black; */
  justify-content: center;
  align-items: center;
  font-size: 18px;
  // 消除点击事件
  pointer-events: none;
}
</style>

vue对接海康摄像头,配合ifarme进行展示。给ifarme点击事件(消除ifarme事件,因为ifarme没有点击事件)
3、组件引入。
vue对接海康摄像头,配合ifarme进行展示。给ifarme点击事件(消除ifarme事件,因为ifarme没有点击事件)
vue对接海康摄像头,配合ifarme进行展示。给ifarme点击事件(消除ifarme事件,因为ifarme没有点击事件)
用的参数。

data() {
return {
       vcamera: {
           IP: "",  // 摄像头的ip
           Port: ,  // 摄像头的端口号  数字类型
           Username: "",   // 登录用户名
           Password: "",    // 登录密码
       },
       icamera: {
           IP: "", // 摄像头的ip
           Port: , // 摄像头的端口号  数字类型
           Username: "", // 登录用户名
           Password: "" // 登录密码
       },
}
}

这样的话不知道是不是我的问题,这样的话会导致摄像头不能移动,所以我们这边的话是后端给提供接口,然后前端调用然后控制云台。
原文链接
消除ifarme默认事件文章来源地址https://www.toymoban.com/news/detail-475720.html

ifarme {
pointer-events: none;
}

到了这里,关于vue对接海康摄像头,配合ifarme进行展示。给ifarme点击事件(消除ifarme事件,因为ifarme没有点击事件)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 海康威视摄像头对接SDK实时预览功能和抓拍功能,懒癌福利,可直接CV

    最近在新系统的研发中负责了视频监控模块的开发,项目监控设备全部采用海康的摄像头,枪机、球机都有,开发的过程中,有个需求是在前端页面上把摄像头画面进行平铺展示,最开始的方案是通过官方API完成,但是后面发现项目上所有的设备都是不联网的,所以只能转由

    2024年02月02日
    浏览(28)
  • 记录对接海康威视摄像头web端实时预览:Linux+ffmpeg+nginx转换RTSP视频流(完整版实现)

            需求:web端实现海康摄像头实时预览效果         由于市面上大部分网络摄像头都支持RTSP协议视频流,web端一般无法直接使用RTSP实现视频预览,本篇使用ffmpeg对视频流进行转换,最终实现web端实时预览。         工具介绍:ffmpeg、nginx、vue         介

    2024年01月25日
    浏览(43)
  • Vue集成海康websdk实现摄像头预览

    选择以及下载相应的websdk: 从海康开放平台下载相应的sdk,web3.0不支持高版本浏览器,web3.2需要摄像头支持摄像头取流,web3.3支持高版本浏览器 我这选择的是3.3的。 可以先测试下开发包是否可以成功访问,修改用ip、户名、密码。端口一般使用默认80,点击登录,然后选择相

    2024年02月03日
    浏览(42)
  • vue+js+海康web开发包接入海康威视摄像头

    一、登录海康开放平台下载web开发包,下载需要先登录海康账号,没有的需先注册一个。 海康开放平台web开发包下载地址:https://open.hikvision.com/download/5cda567cf47ae80dd41a54b3?type=10id=4c945d18fa5f49638ce517ec32e24e24 二、将web开发包引入vue项目 下载后解压的包目录如下: 将把webs下的整个

    2024年02月02日
    浏览(41)
  • openCV 多线程调用多个海康威视摄像头(避免画面不同步),进行人脸识别

    1、创建多个线程来拉取不同的视频流,不使用多线程的话,所有的视频流就在排一个队,会出现画面不同步的情况 代码: 2、使用numpy将多个画面放在同一个frame中,图像就是矩阵,numpy是用来处理矩阵的类 代码:  进行人脸识别,网不好帧率太低

    2024年04月25日
    浏览(83)
  • vue2使用rtsp视频流接入海康威视摄像头(纯前端)

    海康威视官方的RTSP最新取流格式如下: rtsp://用户名:密码@IP:554/Streaming/Channels/101 用户名和密码 IP就是登陆摄像头时候的IP(笔者这里IP是192.168.1.210) 所以笔者的rtsp流地址就是 rtsp://用户名:密码@192.168.1.210:554/Streaming/Channels/101 1.1关闭 萤石云的接入 1.2 调整视频编码为H.264 在此下载

    2024年04月26日
    浏览(41)
  • vue中web端播放rtsp视频流(摄像头监控视频)(海康威视录像机)

    ffmpeg下载 https://ffmpeg.org/download.html 找ffmpeg-release-essentials.zip点击下载,下载完解压 ffmpeg.exe 程序运行 添加成功后验证是否生效任意地方打开cmd窗口输入 ffmpeg 打印如下表示成功 新建一个app.js文件,同级目录下npm安装 node-rtsp-stream 我是直接写在项目里了,你们可以单独写在外

    2024年04月25日
    浏览(36)
  • 大华摄像头有问题,海康摄像头也有问题

    买了个大华摄像头,除了抗噪方面效果不好,我是很满意的。前一段时间摄像头启动出了点问题(忘记拔掉SD卡),于是买了个海康的。 大华摄像头是3寸,海康是2寸。视频效果差多了。看来大有大的道理。 更可恨的是,萤石云不支持这个摄像头(说是要插录像机)。买的时

    2024年02月11日
    浏览(35)
  • 海康威视摄像头选型号指南

    看了一个星期的摄像头,经过无数的踩坑和扯皮,看了无数的说明书和博文,终于从茫茫的摄像头型号中浮上岸了,对这个摄像头是什么玩意儿有了大致清晰的认识。我只是用来开发的,怎么简单怎么来,所以和民用的方向不一样,但也可做个参考。 像素:200-400万(根据需求

    2024年02月09日
    浏览(160)
  • opencv调用海康威视工业摄像头

    opencv调用海康威视工业摄像头需要用到官方接口VideoCapture() 接口:cv2.VideoCapture() 作用:获取本地目录下的视频文件或者使用本电脑的摄像头获取实时数据;  “0” ,调用的是本地电脑摄像头 “1” ,调用的是外接摄像头 打开MVS  正常设置使画面正常  然后找到宽度和长度

    2024年02月13日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包