| 
					
				 | 
			
			
				@@ -85,36 +85,69 @@ const uploadLock = ref(true); // 上传锁 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let backTimer = null; // 返回计时器 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const canUpload = ref(true); // 是否可以上传 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let tracker; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// ------------------- NVR 相关配置 -------------------  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const NVRInit = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  let options = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    wsURL: "ws://" + "192.168.101.108" + ":" + "80" + "/rtspoverwebsocket", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    rtspURL: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "rtsp://" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "192.168.101.108"+":" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "80" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "/cam/realmonitor?channel=" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    1 + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "&subtype=" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    0 + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    "&proto=Private3", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    username: "admin", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    password: "admin123", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  let videoObj = document.getElementById("video"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  let canvasObj = document.getElementById("canvas"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const player = new PlayerControl(options); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  console.log(player, "player"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  player.on("WorkerReady", function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //当文件准备完成后,开始拉流。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    player.connect(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  player.init(videoObj, canvasObj); // 初始化播放器 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // RPC.login('admin', 'admin123', false).then((res)=>{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //   console.log(res,'res'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//----------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // 检查摄像头并设置视频流 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-async function checkCamera() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // 获取媒体设备信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  const navigator = window.parent.navigator.mediaDevices; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (!navigator) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    window.alert("该浏览器不支持开启摄像头,请更换最新版浏览器"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //   console.log(navigator, "navigator"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //判断用户是否拥有摄像头 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  const devices = await navigator.enumerateDevices(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// async function checkCamera() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//   // 获取媒体设备信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//   const navigator = window.parent.navigator.mediaDevices; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//   if (!navigator) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//     window.alert("该浏览器不支持开启摄像头,请更换最新版浏览器"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//   //   console.log(navigator, "navigator"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//   //判断用户是否拥有摄像头 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//   const devices = await navigator.enumerateDevices(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // 如果存在媒体设备,获取摄像头视频流 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (devices) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // 请求用户媒体设备(摄像头) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const stream = await navigator.getUserMedia({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      audio: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      video: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        width: 280, // 设置视频宽度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        height: 280, // 设置视频高度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        facingMode: "user", // 使用前置摄像头 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//   // 如果存在媒体设备,获取摄像头视频流 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//   if (devices) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//     // 请求用户媒体设备(摄像头) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//     const stream = await navigator.getUserMedia({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//       audio: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//       video: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//         width: 280, // 设置视频宽度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//         height: 280, // 设置视频高度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//         facingMode: "user", // 使用前置摄像头 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//       }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // 如果视频元素存在,将视频流绑定到视频元素上并开始播放 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (videoEl.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      videoEl.value.srcObject = stream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      videoEl.value.play(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//     // 如果视频元素存在,将视频流绑定到视频元素上并开始播放 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//     if (videoEl.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//       videoEl.value.srcObject = stream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//       videoEl.value.play(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // 拍摄函数,截取摄像头当前帧并显示在页面上 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function shoot() { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -291,10 +324,9 @@ const init = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //调接口把图片传到后端 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const uploadImgFn = (imageDataUrl) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // 发送原生axios请求地址为192.168.101.13/face-login 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if(!canUpload.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    uploadImgFn() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (!canUpload.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   canUpload.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     canUpload.value = true; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -325,35 +357,16 @@ const uploadImgFn = (imageDataUrl) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       console.log(error); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// // 上传图片 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// const screenshotAndUpload = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   // 上锁避免重复发送请求 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   uploadLock.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   // 绘制当前帧图片转换为base64格式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   // let canvas = document.getElementById("screenshotCanvas"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   // let data = video.value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   // console.log('canvas',canvas); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   // let ctx = canvas.getContext("2d"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   // ctx.clearRect(0, 0, canvas.width, canvas.height); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   // ctx.drawImage(data, 0, 0, canvas.width, canvas.height); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   let base64Img = canvas.toDataURL("image/jpeg"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   // 使用 base64Img 请求接口即可 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   // console.log("base64Img:", base64Img); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   // 请求接口成功以后打开锁 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   // this.uploadLock = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // 在组件挂载后执行检查摄像头的操作 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 onMounted(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  checkCamera(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // checkCamera(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   //   shoot(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // }, 3000); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   pagInit(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   init(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  NVRInit(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   backTimer = setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     router.push("/"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }, 30000); 
			 |