Kaynağa Gözat

1、梯控js

slowslo 4 yıl önce
ebeveyn
işleme
1062026bb8
2 değiştirilmiş dosya ile 193 ekleme ve 0 silme
  1. 193 0
      public/cdn/elevator/main.js
  2. 0 0
      public/cdn/elevator/zlplayer.min.js

+ 193 - 0
public/cdn/elevator/main.js

@@ -0,0 +1,193 @@
+import zlplayer from '';
+
+let webServer = {
+    host: 'localhost',
+    port: 7890
+}
+
+let isLive = true;          //是否为实时视频
+
+zlplayer.resPath = '';
+
+//去后端获取预览视频地址
+function getRealUrlByToken() {
+    isLive = true;
+    let elevatorSn = document.getElementById('elevatorSn').value;
+    let xhr = new XMLHttpRequest();
+    let reqUrl = `http://${webServer.host}:${webServer.port}/getElevatorMonitolUrlByToken?elevatorSn=${elevatorSn}`;
+    xhr.open('GET', reqUrl, false);
+    xhr.send();
+    if (xhr.status == 200) {
+        let res = JSON.parse(xhr.responseText);
+        if (res && res.monitorUrl) {
+            document.getElementById('url').value = res.monitorUrl;
+        }
+        return;
+    }
+    console.error(`getElevatorMonitolUrl error ${xhr.status}`);
+}
+
+
+//去后端获取报警录像地址
+function getAlarmRecordUrlByToken() {
+    isLive = false;
+    let elevatorSn = document.getElementById('elevatorSn').value;
+    let alarmId = document.getElementById('alarmId').value;
+    let xhr = new XMLHttpRequest();
+    let reqUrl = `http://${webServer.host}:${webServer.port}/getAlarmRecordUrlByToken?elevatorSn=${elevatorSn}&alarmId=${alarmId}`;
+    xhr.open('GET', reqUrl, false);
+    xhr.send();
+    if (xhr.status == 200) {
+        let res = JSON.parse(xhr.responseText);
+        if (res && res.recordUrl) {
+            document.getElementById('url').value = res.recordUrl;
+        }
+        return;
+    }
+    console.error(`getAlarmRecordUrlByToken error ${xhr.status}`);
+}
+
+//去后端获取视频地址
+function getTimeRecordUrlByToken() {
+    isLive = false;
+    let elevatorSn = document.getElementById('elevatorSn').value;
+    let beginTime = parseInt(document.getElementById('beginTime').value);
+    let endTime = parseInt(document.getElementById('endTime').value);
+    let xhr = new XMLHttpRequest();
+    let reqUrl = `http://${webServer.host}:${webServer.port}/getElevatorRecordUrlByToken?elevatorSn=${elevatorSn}&beginTime=${beginTime}&endTime=${endTime}`;
+    xhr.open('GET', reqUrl, false);
+    xhr.send();
+    if (xhr.status == 200) {
+        let res = JSON.parse(xhr.responseText);
+        if (res && res.recordUrl) {
+            document.getElementById('url').value = res.recordUrl;
+        }
+        return;
+    }
+    console.error(`getTimeRecordUrlByToken error ${xhr.status}`);
+}
+
+let player = null;
+
+//开始播放
+function startPlay() {
+    stopPlay();
+
+    let videoElement = document.getElementById('myvideo');
+    let urlElement = document.getElementById("url");
+
+    let config = {
+        url: urlElement.value,                   //资源地址
+        isLive: isLive,                          //实时预览:true , 回放:false
+        enableFullScreen: true,                  //是否双击全屏
+        enableFillWindow: true                   //是否视频铺满窗口
+    };
+
+    player = zlplayer.createPlayer(videoElement, config);
+    player.on('error', onPlayerError);
+    player.play();
+}
+
+//停止播放
+function stopPlay() {
+    if ( player ) {
+        player.stop();
+        player = null;
+    }
+}
+
+//抓图
+function capture() {
+    if (player) {
+
+        let img = player.capture();            //抓图,返回image
+
+        if (img) {
+            let now = new Date();
+            let filename = `capture_${now.toLocaleDateString()}_${now.toLocaleTimeString()}.png`;
+
+            let save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
+            save_link.href = img;
+            save_link.download = filename;
+
+            let event = document.createEvent('MouseEvents');
+            event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
+            save_link.dispatchEvent(event);
+        }
+    }
+}
+
+//开始录像
+function startRecord() {
+    if (player) {
+        player.startRecord();
+    }
+}
+
+//停止录像
+function stopRecord() {
+    if (player) {
+        let blob = player.stopRecord();              //停止录像返回 blob
+        if ( blob ) {
+            let url = window.URL.createObjectURL(blob);
+            let now = new Date();
+
+            let filename = `record_${now.toLocaleDateString()}_${now.toLocaleTimeString()}.webm`;
+
+            let a = document.createElement('a');
+            a.style.display = 'none';
+            a.href = url;
+            a.download = filename;
+            document.body.appendChild(a);
+            a.click();
+            setTimeout(function() {
+                document.body.removeChild(a);
+                window.URL.revokeObjectURL(url);
+            }, 100);
+        }
+    }
+}
+
+//旋转视频
+function rotate(deg) {
+    if (player) {
+        player.rotate(deg);
+    }
+}
+
+//清理创建过的播放器
+function clearPlayer() {
+    zlplayer.clearPlayer();
+}
+
+//播放器错误event
+function onPlayerError(type, reason, desc) {
+    switch(type){
+        case 'NetworkError':
+            if ( desc.code == -1 ) {
+                alert("网络错误");
+            }
+            else if ( desc.code == -999 ) {
+                alert("网络错误, 流中断");
+
+                let urlElement = document.getElementById("url");
+                player.flvSrc.url = urlElement.value;    //这里应该是重新去获取新的url
+                player.resume();
+            }else if ( desc.code == 401 ) {
+                console.log(`${desc.msg} : 鉴权失败`);
+            }
+            else if ( desc.code == 404 ) {
+                alert("资源不存在, 设备不在线");
+            };
+            break;
+        case 'MediaError':
+            if ( reason == 'NeedReplay' ) {
+                console.log("媒体异常,自动重新播放");
+
+                let urlElement = document.getElementById("url");
+                player.flvSrc.url = urlElement.value;    //这里应该是重新去获取新的url
+                player.resume();
+            };
+            break;
+    }
+}

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
public/cdn/elevator/zlplayer.min.js


Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor