From 804d59e162b72be684d0087a8cd74dbd6fecbf4d Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期五, 30 十二月 2022 16:57:18 +0800
Subject: [PATCH] 添加投影配置页面

---
 src/pages/cameraPlayer/index/App.vue |   98 +++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 75 insertions(+), 23 deletions(-)

diff --git a/src/pages/cameraPlayer/index/App.vue b/src/pages/cameraPlayer/index/App.vue
index dcdb03c..172afb9 100644
--- a/src/pages/cameraPlayer/index/App.vue
+++ b/src/pages/cameraPlayer/index/App.vue
@@ -1,50 +1,102 @@
 <template>
   <div style="width:100%; height: 100%;">
-    <camera-player :cameraID="query.cameraId" :rtspUrl="query.rtspUrl" :isGb="query.gb28181 ==='1'"></camera-player>
+    <camera-player
+      :cameraID="query.cameraId"
+      :rtspUrl="query.rtspUrl"
+      :isGb="query.gb28181 === '1'"
+      v-if="!enableWasm"
+    ></camera-player>
+    <wasm-player
+      :cameraID="query.cameraId"
+      :rtspUrl="query.rtspUrl"
+      :isGb="query.gb28181 === '1'"
+      :videoUrl="query.videoUrl"
+      :isStream="isStream"
+      v-else
+    ></wasm-player>
   </div>
 </template>
-
+ 
 <script>
 // 鎺ュ彛浣跨敤
-// 鍙傛暟 cameraId 鎽勫儚鏈篿d, rtspUrl 鎽勫儚鏈簉tsp鍦板潃, gb28181 鏄惁鏄浗鏍囨憚鍍忔満(1 鎴� 0)
+// 鍙傛暟 cameraId 鎽勫儚鏈篿d, rtspUrl 鎽勫儚鏈簉tsp鍦板潃, gb28181 鏄惁鏄浗鏍囨憚鍍忔満(1 鎴� 0), enableWasm 浣跨敤wasm 鎾斁鍣�, isStream 鏄惁鎾斁瀹炴椂娴�, videoUrl 瑙嗛鏂囦欢鍦板潃
 // http://192.168.20.191:7003/view/cameraPlayer/index.html?cameraId=e7e6157a-5929-4e78-b390-e365141169c8&rtspUrl=rtsp://admin:a1234567@192.168.5.51:554/h264/ch1/main/av_stream
-
-import CameraPlayer from "../components/player";
-
+ 
+import CameraPlayer from "../components/player"
+import WasmPlayer from "@/components/wasmPlayer"
+ 
 export default {
   name: "BasicCameraPlayer",
   components: {
-    CameraPlayer
+    CameraPlayer,
+    WasmPlayer
   },
   data() {
     return {
       query: {
         cameraId: "",
         rtspUrl: "",
-        gb28181: "0"
-      }
+        gb28181: "0",
+        videoUrl: `${location.protocol === "https" ? "wss" : "ws"}://${location.host}/ws`
+      },
+      enableWasm: false,
+      isStream: true
     }
   },
   mounted() {
-    this.urlParse();
+    this.urlParse()
   },
   methods: {
     urlParse() {
-      let url = window.location.search;
-      let obj = {};
-      let reg = /[?&][^?&]+=[^?&]+/g;
-      let arr = url.match(reg);
+      let url = window.location.search
+      let obj = {}
+      let reg = /[?&][^?&]+=[^?&]+/g
+      let arr = url.match(reg)
       if (arr) {
         arr.forEach((item) => {
-          let temArr = item.substring(1).split('=');
-          let key = decodeURIComponent(temArr[0]);
-          let value = decodeURIComponent(temArr[1]);
-          obj[key] = value;
-        });
+          let temArr = item.substring(1).split("=")
+          let key = decodeURIComponent(temArr[0])
+          let value = decodeURIComponent(temArr[1])
+          obj[key] = value
+          if (key == "rtspUrl") {
+            obj[key] = this.rtspParse(value)
+          }
+ 
+          if (key == "enableWasm" && value == "1") {
+            this.enableWasm = true
+          }
+          if (key == "isStream" && value == "0") {
+            this.isStream = false
+          }
+        })
       }
-      this.query = Object.assign({}, this.query, obj);
-      console.log("cameraPlayer:", this.query)
+      this.query = Object.assign({}, this.query, obj)
+      console.log("cameraPlayer:", this.query, "enableWasm:", this.enableWasm, "isStream:", this.isStream)
+    },
+    // 瀵逛紶鍏ョ殑rtsp瀵嗙爜杩涜urlEncode澶勭悊
+    rtspParse(input) {
+      // 鏃犳晥鐨剅tsp鍦板潃
+      if (!input.length || input.indexOf("rtsp://") != 0) {
+        return
+      }
+ 
+      let userinfoSplitPos = input.indexOf(":", 7)
+      let userinfoEndPos = input.lastIndexOf("@")
+ 
+      // 鏈寘鍚櫥褰曚俊鎭殑rtsp鍦板潃, 鐩存帴杩斿洖鍘焨rl
+      if (userinfoSplitPos == -1 || userinfoEndPos == -1 || userinfoEndPos < userinfoSplitPos) {
+        return input
+      }
+ 
+      let usrPassword = input.slice(userinfoSplitPos + 1, userinfoEndPos)
+      if (usrPassword.indexOf("@") != -1) {
+        return input
+      }
+ 
+      let encodePassword = encodeURIComponent(usrPassword)
+ 
+      return input.replace(usrPassword, encodePassword)
     }
   }
-};
-</script>
+}
+</script>
\ No newline at end of file

--
Gitblit v1.8.0