vue项目集成萤石云在Web系统中实现实时摄像头监控及控制功能

24 篇文章 2 订阅

需求

需求: 开发人员在产线上放置一个萤石摄像头,前端在可视化大屏上实时监控,且控制左右上下功能。

效果

vue项目集成萤石云在Web系统中实现实时摄像头监控及控制功能

萤石云接入web前期准备工作

  1. 阅读萤石云API文档:萤石云开放平台开发者文档

  2. 阅读萤石云控制API文档:萤石云摄像头控制文档

  3. 需要准备设备序列号,萤石云视频地址,accessToken,在代码中我将会写成乱码形式。

  4. 了解调用API时候返回的错误码,根据错误码做出响应的操作:萤石云调用API时出现的错误码

  5. 萤石云参数说明:参数说明,使用地址
    vue项目集成萤石云在Web系统中实现实时摄像头监控及控制功能

  6. vue项目安装依赖

    npm install ezuikit-js@0.2.4
    

vue项目集成萤石云在Web系统中实现实时摄像头监控及控制功能
7. 页面引入ezuikit

import EZUIKit from "ezuikit-js";
  1. 页面使用,及其控制开关实现
<template>
  <div>
    <div id="video-container" ref="video" class="content video">视频</div>
    <div class="btn_box">
      <el-button
        style="margin-left: 10px;"
        round
        size="mini"
        icon="el-icon-top-left"
        @click="directionControl(4)"
      ></el-button>
      <el-button
        round
        size="mini"
        icon="el-icon-top"
        @click="directionControl(0)"
      ></el-button>
      <el-button
        round
        size="mini"
        icon="el-icon-top-right"
        @click="directionControl(6)"
      ></el-button>
      <el-button
        round
        size="mini"
        icon="el-icon-back"
        @click="directionControl(2)"
      ></el-button>
      <el-button
        round
        size="mini"
        icon="el-icon-video-play"
        @click="stopTurn"
      ></el-button>
      <el-button
        round
        size="mini"
        icon="el-icon-right"
        @click="directionControl(3)"
      ></el-button>
      <el-button
        round
        size="mini"
        icon="el-icon-bottom-left"
        @click="directionControl(5)"
      ></el-button>
      <el-button
        round
        size="mini"
        icon="el-icon-bottom"
        @click="directionControl(1)"
      ></el-button>
      <el-button
        round
        size="mini"
        icon="el-icon-bottom-right"
        @click="directionControl(7)"
      ></el-button>
    </div>
  </div>
</template>
  1. 相关JS代码

import EZUIKit from "ezuikit-js";
import axios from "axios";
export default {
  mounted() {
    this.initEZUIKitPlayer();
  },
  data() {
    return {
      eZUIKitPlayer: null,
      accessToken:
        "at.b1bw5w7f8ogfo0rjcd5chidksjdu9jty-361f07133z-1oity3u-dth2n7yvl",
      accessUrl: "ezopen://open.ys7.com/F6293ADF88/1.hd.live",
    };
  },
  methods: {
    //停止控制控制云台
    stopTurn() {
      axios({
        url: "https://open.ys7.com/api/lapp/device/ptz/stop",
        method: "post",
        params: {
          accessToken: this.accessToken,
          // direction:num,
          channelNo: 1, // 通道号
          deviceSerial: "F6245FF7788", //序列号
        },
        timeout: 2000,
      }).then((res) => {
        //  console.log(res.data)
        if (res.data.code == "60000") {
          this.$message(res.data.msg);
        }
      });
    },
    // 云平台控制
    directionControl(num) {
      axios({
        url: "https://open.ys7.com/api/lapp/device/ptz/start",
        method: "post",
        params: {
          accessToken: this.accessToken, //accesstoken码,一般一周过期
          speed: 2, //旋转速度
          direction: num, //方向,传入数字,对应数字在api文档有
          channelNo: 1, // 通道号
          deviceSerial: "F62937788", //序列号
        },
        timeout: 2000,
      }).then((res) => {
        if (res.data.code == "60000") {
          this.$message(res.data.msg);
        }
      });
    },
    // 初始化萤石云视频对接
    initEZUIKitPlayer() {
      this.eZUIKitPlayer = new EZUIKit.EZUIKitPlayer({
        id: "video-container",
        accessToken: this.accessToken,
        url: this.accessUrl,
        header: ["capturePicture", "save", "zoom"],
        footer: ["fullScreen"],
        width: 375,
        height: 257,
        autoplay: true,
        audio: 1,
        template: "simple",
      });
    },
  },
};
</script>
  1. CSS相关代码

<style lang="scss" scoped>
.content {
  background: #fff;
  height: 368px;
}
.btn_box {
  margin: 0px auto;
  width: 190px;
  height: 125px;
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  align-content: space-around;
}
</style>
  1. 获取实时视频API说明

vue项目集成萤石云在Web系统中实现实时摄像头监控及控制功能
后续了解更多功能,继续更新

Vue.js萤石云监控可以通过以下步骤实现全屏功能。 首先,在Vue.js的组件,需要引入萤石云监控的SDK,以便能够与监控设备进行交互。可以通过在`<head>`标签引入SDK的链接,或者使用NPM包管理工具进行安装。 接下来,在Vue.js的组件,创建一个DOM元素,用于显示监控画面。可以使用`<div>`或者`<canvas>`等标签来创建DOM元素。 然后,在Vue.js的`mounted`生命周期钩子函数,实例化萤石云监控SDK,并将SDK的实例与之前创建的DOM元素进行绑定,以便能够将监控画面显示在这个DOM元素。 在绑定完成后,可以通过调用SDK实例的方法,来加载监控设备的视频流,并将视频流显示在之前创建的DOM元素。 最后,实现全屏功能可以通过在Vue.js的组件添加一个按钮或者其他的交互元素,并在点击事件调用浏览器的全屏API来实现。可以通过`document.documentElement.requestFullscreen()`或者`element.requestFullscreen()`方法来进入全屏模式,其`element`是之前创建的DOM元素。 需要注意的是,在进入全屏模式时,需要浏览器的支持,不同的浏览器可能有不同的API调用方式。在调用全屏API之前,最好先进行一些兼容性检测,以确保在不同浏览器上都能正常运行。 以上就是使用Vue.js萤石云监控实现全屏功能的基本步骤。具体的实现细节还需要根据具体的项目情况来调整和完善。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值