国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue3實現(xiàn)??低暩鶕?jù)??挡寮M(jìn)行監(jiān)控實時預(yù)覽和回放功能

這篇具有很好參考價值的文章主要介紹了vue3實現(xiàn)??低暩鶕?jù)海康插件進(jìn)行監(jiān)控實時預(yù)覽和回放功能。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

先點(diǎn)贊后觀看,養(yǎng)成好習(xí)慣。

介紹

因為我的文章已經(jīng)寫過基于vue實現(xiàn)海康web插件進(jìn)行視頻播放開箱即用文章,這個文章是利用vite+vue3+js進(jìn)行編寫的,大致內(nèi)容跟vue2一樣,拿過去能直接用。

至于我為什么要用js而不用ts,因為海康提供的三個腳本為js語言的,ts嘗試過一次,我道行太淺,沒搞明白。

這些代碼是可以直接使用的,如果對你有幫助,麻煩點(diǎn)個贊。文章來源地址http://www.zghlxwxcb.cn/news/detail-454619.html

如果需要vue2的開發(fā),點(diǎn)擊跳轉(zhuǎn)vue2開發(fā)文章?

接下來進(jìn)入正題。

一、插件的下載與安裝

下載??堤峁┑牟寮蚸s文件,我上一個文章有講過。

點(diǎn)擊跳轉(zhuǎn)至上一個文章。

引入方式和v2有一些不同,要在主目錄下的index.html中引入js文件。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Vite + Vue + js</title>
</head>

<body>
    <div id="app"></div>
    <script src="/jquery-1.12.4.min.js"></script>
    <script src="/jsencrypt.min.js"></script>
    <script src="/jsWebControl-1.0.0.min.js"></script>
    <script type="module" src="/src/main.js"></script>
</body>

</html>

二、在所需視頻組件中進(jìn)行代碼編寫

我這里是直接把我測試的代碼全放進(jìn)去了,可以全部復(fù)制在組件里既可以使用。

這里我用的是setup語法糖,有不一樣的可自行修改。

<!-- 視頻播放組件 -->
<template>
  <div class="main" ref="playWndBox">
    <div
      id="playWnd"
      class="playWnd"
      :style="{
        height: playWndHeight + 'px',
        width: playWndWidth + 'px',
      }"
    ></div>
  </div>
</template>

<script setup>
import { ref, onMounted, onBeforeUnmount, getCurrentInstance, nextTick } from 'vue'

const playWndBox = ref(null)
let playWndHeight = ref('')
let playWndWidth = ref('')
let pubKey = ref('')
let oWebControl = ref(null)
let objData = ref({
  appkey: "",                 //海康提供的appkey
  ip: "",                     //??堤峁┑膇p   
  secret: "",                 //??堤峁┑膕ecret
  port: 443,
  playMode: 0,        // 0 預(yù)覽 1回放
  layout: "1x1",      //頁面展示的模塊數(shù)【16】
})

onMounted(() => {

  // 獲取頁面的實例對象
  const pageInstance = getCurrentInstance();
  // 獲取dom節(jié)點(diǎn)對象
  const tagDomObj = pageInstance.refs.playWndBox;
  playWndHeight.value = tagDomObj.clientHeight;
  playWndWidth.value = tagDomObj.clientWidth;

  // 監(jiān)聽scroll事件,使插件窗口尺寸跟隨DIV窗口變化
  window.addEventListener("scroll", () => {
    console.log(5);

    // return
    if (oWebControl.value != null) {
      oWebControl.JS_Resize(
        tagDomObj.clientWidth,
        tagDomObj.clientHeight
      );
      this.setWndCover();
    }
  });

  // 監(jiān)聽resize事件,使插件窗口尺寸跟隨DIV窗口變化
  window.addEventListener("resize", (e) => {
    console.log(0);

    if (oWebControl.value != null) {
      oWebControl.JS_Resize(
        tagDomObj.clientWidth,
        tagDomObj.clientHeight
      );
      this.setWndCover();
    }
  });

  // 初始化播放器插件
  nextTick(() => {
    initPlugin();
  })
})

onBeforeUnmount(() => {
  if (oWebControl.value != null) {
    // 先讓窗口隱藏,規(guī)避可能的插件窗口滯后于瀏覽器消失問題
    oWebControl.JS_HideWnd();
    // 銷毀當(dāng)前播放的視頻
    oWebControl.JS_RequestInterface({ funcName: "destroyWnd" });
    // 斷開與插件服務(wù)連接
    oWebControl.JS_Disconnect();
  }
})



const initPlugin = () => {
  oWebControl = new WebControl({
    szPluginContainer: "playWnd", // 指定容器id
    iServicePortStart: 15900, // 指定起止端口號,建議使用該值
    iServicePortEnd: 15900,
    szClassId: "23BF3B0A-2C56-4D97-9C03-0CB103AA8F11", // 用于IE10使用ActiveX的clsid
    cbConnectSuccess: () => {
      // 創(chuàng)建WebControl實例成功
      oWebControl
        .JS_StartService("window", {
          // WebControl實例創(chuàng)建成功后需要啟動服務(wù)
          // 值"./VideoPluginConnect.dll"寫死
          dllPath: "./VideoPluginConnect.dll",
        })
        .then(
          function () {
            // 設(shè)置消息回調(diào)
            oWebControl.JS_SetWindowControlCallback({
              // cbIntegrationCallBack: cbIntegrationCallBack,
            });
            //JS_CreateWnd創(chuàng)建視頻播放窗口,寬高可設(shè)定
            oWebControl
              .JS_CreateWnd("playWnd", 1152, 581, { bEmbed: true })//這一部分很重要,兩個參數(shù)為你盒子的寬高,這樣是寫死是防止組件加載之前出現(xiàn)白屏;bEmbed: true 防止窗口閃爍
              .then(function () {
                // 創(chuàng)建播放實例成功后初始化
                init();
              });
          },
          function () {
            // 啟動插件服務(wù)失敗
          }
        );
    },
    // 創(chuàng)建WebControl實例失敗
    cbConnectError: function () {
      // 這里寫創(chuàng)建WebControl實例失敗時的處理步驟,下面的代碼僅做參看,具體實現(xiàn)步驟根據(jù)個人需求進(jìn)行編寫!?。。。。。?!


      // console.log(0);
      // oWebControl.value = null;
      // // 程序未啟動時執(zhí)行error函數(shù),采用wakeup來啟動程序
      // window.WebControl.JS_WakeUp("VideoWebPlugin://");
      // initCount++;
      // if (initCount < 3) {
      //   setTimeout(function () {
      //     initPlugin();
      //   }, 3000);
      // } else {
      //   setTimeout(function () {
      //     setTimeout(function () {
      //       $router.push('/home/PlugDown')
      //     }, 4000)
      //   }, 4000)
      // }
    },
    cbConnectClose: () => {
      // 異常斷開:bNormalClose = false
      // JS_Disconnect正常斷開:bNormalClose = true
      // console.log("cbConnectClose");
      oWebControl.value = null;
    },
  });
  // oWebControl.JS_CuttingPartWindow(500, 500, 500, 500);

}




// 初始化
const init = (callback) => {
  getPubKey(() => {
    let appkey = objData.value.appkey;                   //綜合安防管理平臺提供的appkey,必填
    let secret = setEncrypt(objData.value.secret); //綜合安防管理平臺提供的secret,必填
    let ip = objData.value.ip;                           //綜合安防管理平臺IP地址,必填
    let playMode = objData.value.playMode;                //初始播放模式:0-預(yù)覽,1-回放
    let port = objData.value.port;                        //綜合安防管理平臺端口,若啟用HTTPS協(xié)議,默認(rèn)443
    let snapDir = "D:\\SnapDir";                        //抓圖存儲路徑
    let videoDir = "D:\\VideoDir";                      //緊急錄像或錄像剪輯存儲路徑
    let layout = objData.value.layout;                   //playMode指定模式的布局
    let enableHTTPS = 1;                                //是否啟用HTTPS協(xié)議與綜合安防管理平臺交互,這里總是填1
    let encryptedFields = "secret";                     //加密字段,默認(rèn)加密領(lǐng)域為secret
    let showToolbar = 1;                                //是否顯示工具欄,0-不顯示,非0-顯示
    let showSmart = 0;                                  //是否顯示移動框線框,0-不顯示,非0-顯示
    let buttonIDs =
      "0,16,256,257,258,259,260,512,513,514,515,516,517,768,769"; //自定義工具條按鈕
    // var toolBarButtonIDs = "2049,2304" // 工具欄上自定義按鈕
    oWebControl
      .JS_RequestInterface({
        funcName: "init",
        argument: JSON.stringify({
          appkey: appkey,         //API網(wǎng)關(guān)提供的appkey
          secret: secret,         //API網(wǎng)關(guān)提供的secret
          ip: ip,                 //API網(wǎng)關(guān)IP地址
          playMode: playMode,      //播放模式(決定顯示預(yù)覽還是回放界面)
          port: port,             //端口
          snapDir: snapDir,       //抓圖存儲路徑
          videoDir: videoDir,     //緊急錄像或錄像剪輯存儲路徑
          layout: layout,         //布局
          enableHTTPS: enableHTTPS,   //是否啟用HTTPS協(xié)議
          encryptedFields: encryptedFields, //加密字段
          showToolbar: showToolbar, //是否顯示工具欄
          showSmart: showSmart,   //是否顯示智能信息
          buttonIDs,              //自定義工具條按鈕
        }),
      })
      .then(function (oData) {
        oWebControl.JS_Resize(playWndWidth.value, playWndHeight.value); // 初始化后resize一次,規(guī)避firefox下首次顯示窗口后插件窗口未與DIV窗口重合問題
        if (callback) {
          callback();
        }
        // 隱藏
        // oWebControl.JS_HideWnd()
      });
  });
}

// RSA 加密
let setEncrypt = (value) => {
  let encrypt = new window.JSEncrypt();
  encrypt.setPublicKey(pubKey);
  return encrypt.encrypt(value);
}
// 獲取公鑰
const getPubKey = (callback) => {
  oWebControl
    .JS_RequestInterface({
      funcName: "getRSAPubKey",
      argument: JSON.stringify({
        keyLength: 1024,
      }),
    })
    .then(function (oData) {
      if (oData.responseMsg.data) {
        pubKey = oData.responseMsg.data;
        callback();
      }
    });
}



// 調(diào)用這個函數(shù)可進(jìn)行視頻播放
// 視頻預(yù)覽功能
const previewVideo = (data) => {
  let cameraIndexCode = data;  // 獲取輸入的監(jiān)控點(diǎn)編號值,必填
  let streamMode = 0;          // 主子碼流標(biāo)識:0-主碼流,1-子碼流
  let transMode = 1;           // 傳輸協(xié)議:0-UDP,1-TCP
  let gpuMode = 0;             // 是否啟用GPU硬解,0-不啟用,1-啟用
  let wndId = -1;              // 播放窗口序號(在2x2以上布局下可指定播放窗口)

  oWebControl.JS_RequestInterface({
    funcName: "startPreview",
    argument: JSON.stringify({
      cameraIndexCode: cameraIndexCode, // 監(jiān)控點(diǎn)編號
      streamMode: streamMode,                 // 主子碼流標(biāo)識
      transMode: transMode,                   // 傳輸協(xié)議
      gpuMode: gpuMode,                       // 是否開啟GPU硬解
      wndId: wndId,                           // 可指定播放窗口
    }),
  })
    .then(function () {
      oWebControl.JS_SetWindowControlCallback({

      });
    });
}

</script>

<style lang="scss" scoped>
.main {
  position: fixed;
  top: 50%;
  left: 20%;
  transform: translateY(-50%);
  width: 60vw;
  height: 60vh;
  margin: auto;
  background-color: #ccc;
}
</style>

三、補(bǔ)充

我這里只實現(xiàn)了視頻播放的功能,其它功能和vue2大同小異,可以看我vue2的文章進(jìn)行修改和開發(fā)。

這些代碼是可以直接使用的,如果對你有幫助,麻煩點(diǎn)個贊。

到了這里,關(guān)于vue3實現(xiàn)??低暩鶕?jù)??挡寮M(jìn)行監(jiān)控實時預(yù)覽和回放功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • vue中web端播放rtsp視頻流(攝像頭監(jiān)控視頻)(??低曚浵駲C(jī))

    vue中web端播放rtsp視頻流(攝像頭監(jiān)控視頻)(海康威視錄像機(jī))

    ffmpeg下載?https://ffmpeg.org/download.html 找ffmpeg-release-essentials.zip點(diǎn)擊下載,下載完解壓 ffmpeg.exe 程序運(yùn)行 添加成功后驗證是否生效任意地方打開cmd窗口輸入 ffmpeg 打印如下表示成功 新建一個app.js文件,同級目錄下npm安裝 node-rtsp-stream 我是直接寫在項目里了,你們可以單獨(dú)寫在外

    2024年04月25日
    瀏覽(36)
  • Python海康威視SDK實現(xiàn)實時預(yù)覽:快速構(gòu)建高效視頻監(jiān)控系統(tǒng)

    Python??低昐DK實現(xiàn)實時預(yù)覽:快速構(gòu)建高效視頻監(jiān)控系統(tǒng) 在當(dāng)今社會,安全問題越來越受到人們的關(guān)注,越來越多的企業(yè)和機(jī)構(gòu)開始建設(shè)視頻監(jiān)控系統(tǒng)。而Python作為一種高效、易用的編程語言,已經(jīng)成為了許多開發(fā)人員的首選。本文將介紹如何使用Python??低昐DK來實現(xiàn)實

    2024年02月14日
    瀏覽(23)
  • uni-app引入??低昲5player實現(xiàn)視頻監(jiān)控的播放

    uni-app引入??低昲5player實現(xiàn)視頻監(jiān)控的播放

    知識儲備 uni-app web-view組件相關(guān)知識:點(diǎn)擊學(xué)習(xí)。 ??低曄嚓P(guān)工具下載:點(diǎn)擊跳轉(zhuǎn)下載。 web-view組件不全屏顯示:uni-app web-view 如果設(shè)置不全屏 不自動鋪滿。 工具下載 首先下載海康威視h5player的demo 在uni-app項目中static文件夾下創(chuàng)建文件目錄,我命名為h5player 將demo中bin文件

    2024年02月02日
    瀏覽(105)
  • ??低暫笈_監(jiān)控布防

    海康威視后臺監(jiān)控布防

    由于公司業(yè)務(wù)的需要,前端時間一直在折騰??禂z像頭的對接。在這期間踩過許多坑,做一記錄分享。 大致的業(yè)務(wù)場景,主要用到的是??档?Ai 攝像頭與高清攝像頭,實現(xiàn)監(jiān)控布防與實時畫面在 web 頁面展示預(yù)覽。 對于 Ai 攝像頭內(nèi)部已經(jīng)上傳了訓(xùn)練好的模型,直接調(diào)用海康

    2024年02月06日
    瀏覽(24)
  • 海康威視監(jiān)控攝像頭連接電腦教程

    ??低暠O(jiān)控攝像頭連接電腦教程

    官網(wǎng)下載SADP軟件:https://www.wolai.com/wM6rWeBrRtrfmMH2BTVUXZ 雙擊下載的軟件進(jìn)行安裝 打開軟件,將設(shè)備連接到攝像頭,便可在軟件中搜索到攝像頭 選擇攝像頭,輸入管理員密碼,即可完成對攝像頭的控制 設(shè)置攝像機(jī)IP地址與網(wǎng)口地址處于同一網(wǎng)段 設(shè)置網(wǎng)絡(luò)攝像機(jī)IP地址時,保持設(shè)

    2024年02月04日
    瀏覽(29)
  • vue3在瀏覽器段展示??当O(jiān)控視頻

    vue3在瀏覽器段展示??当O(jiān)控視頻

    目錄 一、需求 二、最后成果展示 三、思路和方法 3.1 首先安裝插件,可以在上面的地址中下載安裝,建立一個dom 3.2 初始化的時候可以獲取一個視頻展示的一個長寬 3.3 vue data中定義 3.4 初始化視頻的方法在vue的methods中 3.5 開始方法 3.6 暫停方法 3.7 銷毀監(jiān)控方法 需要在瀏覽器

    2024年02月12日
    瀏覽(25)
  • 海康威視監(jiān)控視頻,螢石云免費(fèi)版四路并發(fā)訪問限制繞過

    ??低暠O(jiān)控視頻,螢石云免費(fèi)版四路并發(fā)訪問限制繞過

    公司新裝了不少??低晹z像頭,通過NVR連接到了螢石云,由于螢石云免費(fèi)版限制了單個攝像頭的并發(fā)訪問數(shù)(每個攝像頭同時只允許4個用戶進(jìn)行查看實時視頻),但是又不想付費(fèi)購買企業(yè)版,于是著手思考如何解決這個問題。 需求 需求很明確,每個攝像頭需要支持多用戶

    2023年04月08日
    瀏覽(132)
  • ??低暠O(jiān)控相機(jī)的SDK與opencv調(diào)用(非工業(yè)相機(jī))

    ??低暠O(jiān)控相機(jī)的SDK與opencv調(diào)用(非工業(yè)相機(jī))

    本篇主要對??低暤谋O(jiān)控相機(jī)的SDK回調(diào)進(jìn)行研究,并于opencv結(jié)合,保存圖像,以供后續(xù)其他處理,開發(fā)語言為C++ 2.1 海康SDK介紹 ??礢DK下載地址 根據(jù)自身編譯環(huán)境,下載對應(yīng)的SDK,需要注意的是,不要和工業(yè)相機(jī)SDK相混淆,工業(yè)相機(jī)好像是MVS是什么玩意兒,現(xiàn)在暫時沒研究

    2024年02月04日
    瀏覽(39)
  • 可視化大屏中用vue實現(xiàn)??低旳R鷹眼畫面(物聯(lián)網(wǎng)項目—涉及硬件設(shè)備的連接)

    可視化大屏中用vue實現(xiàn)??低旳R鷹眼畫面(物聯(lián)網(wǎng)項目—涉及硬件設(shè)備的連接)

    具體效果可參照??倒娞柕难菔疽曨lhttps://mp.weixin.qq.com/s/K7C8BJGgwq3E1woXK7F6SQ 項目效果圖: 能夠在項目中播放鷹眼視頻,其實前端的代碼很少。 因為??低暤腁R鷹眼視頻已經(jīng)做成了一個集成控件,也就是一套完整的系統(tǒng),相當(dāng)于AR畫面里面的東西都不需要重新寫,只需要在

    2024年02月05日
    瀏覽(18)
  • vue3+ts實現(xiàn)視頻根據(jù)時間軸截取,并可以通過傳入截取起止時間進(jìn)行當(dāng)前剪輯的回顯

    vue3+ts實現(xiàn)視頻根據(jù)時間軸截取,并可以通過傳入截取起止時間進(jìn)行當(dāng)前剪輯的回顯

    ?公司提出想做一個視頻編輯功能,每次只裁剪一段即可,UI同時也想實現(xiàn)時間軸為關(guān)鍵幀圖片的效果,從網(wǎng)上也沒找到合適的組件,簡單思考后覺得并不難,決定自己封裝一個吧。組件涉及到的只有vue3+ts+scss,沒有使用其他插件。 穿插一個簡化版本,時間軸是一條線,功能

    2023年04月09日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包