| | |
| | | <div class="item">缩å°ä½:{{ 0 }}</div> |
| | | <div class="item">伸åºé度:{{ ruleForm.extendSpeed }}</div> |
| | | <div class="item">缩åé度:{{ ruleForm.extendSpeed }}</div> |
| | | <!-- <div class="open"> |
| | | <div class="city"> |
| | | <div class="dotted"></div> |
| | | <div class="pulse1"></div> |
| | | <div class="pulse2"></div> |
| | | <div class="pulse3"></div> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | <!-- è§é¢æ¡ --> |
| | | <div style="display: flex; justify-content: center"> |
| | | <!-- <div |
| | | style=" |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | width: 80%; |
| | | " |
| | | > --> |
| | | <!-- 横å±è§é¢çæ§å·¦ä¾§ --> |
| | | <div class="video_l"> |
| | | <video |
| | |
| | | <span>å³ä¾§è¦ææºæ</span> |
| | | <span></span> |
| | | </div> |
| | | <!-- è§é¢æ¡ --> |
| | | |
| | | <!-- <div |
| | | style=" |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | width: 80%; |
| | | " |
| | | > --> |
| | | <div class="operate"> |
| | | <div class="item">伸å°ä½:{{ ruleForm.leftPosition }}</div> |
| | | <!-- ruleForm.leftPosition --> |
| | | <div class="item">缩å°ä½:{{ 0 }}</div> |
| | | <div class="item">伸åºé度:{{ ruleForm.extendSpeed }}</div> |
| | | <div class="item">缩åé度:{{ ruleForm.extendSpeed }}</div> |
| | | <!-- <div class="open"> |
| | | <div class="city"> |
| | | <div class="dotted"></div> |
| | | <div class="pulse1"></div> |
| | | <div class="pulse2"></div> |
| | | <div class="pulse3"></div> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | <div style="display: flex; justify-content: center;"> |
| | | <!-- 横å±è§é¢çæ§å³ä¾§ --> |
| | |
| | | height="100%" |
| | | ></video> |
| | | </div> |
| | | <!-- </div> --> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="item">缩å°ä½:{{ 0 }}</div> |
| | | <div class="item">伸åºé度:{{ ruleForm.extendSpeed }}</div> |
| | | <div class="item">缩åé度:{{ ruleForm.extendSpeed }}</div> |
| | | <!-- <div class="open"> |
| | | <div class="city"> |
| | | <div class="dotted"></div> |
| | | <div class="pulse1"></div> |
| | | <div class="pulse2"></div> |
| | | <div class="pulse3"></div> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | <!-- <span style="color: #fff; font-size: 2.5rem; font-weight: bold" |
| | | >è§é¢çæ§å·¦ä¾§</span |
| | | > --> |
| | | |
| | | <div style="display: flex; flex-direction: column; align-items: center"> |
| | | <div class="video_l"> |
| | | <video |
| | |
| | | <div class="item">缩å°ä½:{{ 0 }}</div> |
| | | <div class="item">伸åºé度:{{ ruleForm.retractionSpeed }}</div> |
| | | <div class="item">缩åé度:{{ ruleForm.retractionSpeed }}</div> |
| | | <!-- <div class="open"> |
| | | <div class="city"> |
| | | <div class="dotted"></div> |
| | | <div class="pulse1"></div> |
| | | <div class="pulse2"></div> |
| | | <div class="pulse3"></div> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | <!-- <span style="color: #fff; font-size: 2.5rem; font-weight: bold" |
| | | >è§é¢çæ§å³ä¾§</span |
| | | > --> |
| | | <div style="display: flex; flex-direction: column; align-items: center"> |
| | | <div class="video_r"> |
| | | <video |
| | |
| | | Pouse, |
| | | GetPosition, |
| | | GetParameter, |
| | | GetStandid |
| | | } from "@/api/newapi/Parameters.js"; |
| | | |
| | | const router = useRouter(); |
| | |
| | | retractionSpeed: 0, |
| | | manualExtend: 0, |
| | | manualRetraction: 0, |
| | | // depid: userInfo.depid, |
| | | // account: userInfo.userName, |
| | | leftPosition: 0, |
| | | rightPosition: 0, |
| | | }); |
| | |
| | | const webRtcServer_right = ref(null); |
| | | |
| | | // æå头 RTSP å°åï¼æ³¨æ %23 æ¿ä»£ #ï¼è¿æ¯ URL ç¼ç |
| | | const rtspLeft = |
| | | "rtsp://admin:MXmx2380%23@192.168.1.168:554/Streaming/Channels/101"; |
| | | const rtspRight = |
| | | "rtsp://admin:MXmx2380%23@192.168.1.168:554/Streaming/Channels/201"; |
| | | const videoStreamList = [ |
| | | // index = StationID - 1ï¼å¯¹åº StationID = 1 æ¶å第 0 项 |
| | | { |
| | | left: "rtsp://admin:MXmx2380%23@192.168.1.168:554/Streaming/Channels/101", |
| | | right: "rtsp://admin:MXmx2380%23@192.168.1.168:554/Streaming/Channels/201" |
| | | }, |
| | | { |
| | | left: "rtsp://admin:MXmx2380%23@192.168.1.169:554/Streaming/Channels/101", |
| | | right: "rtsp://admin:MXmx2380%23@192.168.1.169:554/Streaming/Channels/201" |
| | | }, |
| | | { |
| | | left: "rtsp://admin:MXmx2380%23@192.168.1.170:554/Streaming/Channels/101", |
| | | right: "rtsp://admin:MXmx2380%23@192.168.1.170:554/Streaming/Channels/201" |
| | | } |
| | | // å¯ä»¥ç»§ç»æ·»å æ´å¤ç«ç¹æµå°å |
| | | ]; |
| | | const getStationId = async () => { |
| | | try { |
| | | const res = await GetStandid() |
| | | console.log("è§é¢çæ§ç«ç¹",res) |
| | | if (res.status) { |
| | | const stationId = parseInt(res.data); |
| | | initVideoByStationId(stationId);/// ä¼ éå°è§é¢åå§å彿°ï¼è°ç¨æ¹æ³ï¼ |
| | | } else { |
| | | ElMessage.error("è·åç«ç¹ç¼å·å¤±è´¥ï¼" + res.message); |
| | | } |
| | | } catch (err) { |
| | | ElMessage.error("请æ±å¤±è´¥ï¼" + err.message); |
| | | } |
| | | }; |
| | | |
| | | |
| | | |
| | | // WebRtcStreamer æå¡å°å |
| | | const serverUrl = "http://192.168.1.103:8000"; // â æ¹ä¸ºä½ è¿è¡çé£å°çµèç IP |
| | | |
| | | const initVideo = () => { |
| | | //æ ¹æ®å端è¿åçä¸åæ°åæ¥è¯»åä¸åçè§é¢çæ§æµ |
| | | const initVideoByStationId = (stationId) => { |
| | | const index = stationId - 1; |
| | | |
| | | if (index < 0 || index >= videoStreamList.length) { |
| | | ElMessage.error("æ æçç«ç¹ç¼å·ï¼" + stationId); |
| | | return; |
| | | } |
| | | |
| | | const rtspUrls = videoStreamList[index]; |
| | | |
| | | try { |
| | | webRtcServer_left.value = new WebRtcStreamer("video_left", serverUrl); |
| | | webRtcServer_left.value.connect(rtspLeft); |
| | | webRtcServer_left.value.connect(rtspUrls.left); |
| | | |
| | | webRtcServer_right.value = new WebRtcStreamer("video_right", serverUrl); |
| | | webRtcServer_right.value.connect(rtspRight); |
| | | webRtcServer_right.value.connect(rtspUrls.right); |
| | | |
| | | console.log( |
| | | "è§é¢åå§å宿", |
| | | webRtcServer_left.value, |
| | | webRtcServer_right.value |
| | | ); |
| | | console.log("è§é¢åå§å宿ï¼", rtspUrls); |
| | | } catch (err) { |
| | | ElMessage.error("è§é¢åå§å失败: " + err.message); |
| | | } |
| | | }; |
| | | |
| | | |
| | | const destroyVideo = () => { |
| | | if (webRtcServer_left.value) { |
| | |
| | | |
| | | // 以䏿¯è§é¢çæ§ |
| | | onMounted(() => { |
| | | initVideo(); |
| | | getStationId(); // 页é¢å è½½æ¶èªå¨è·åå¹¶ææ¾è§é¢ |
| | | // initVideoByStationId(); |
| | | //çå¬çªå£å¤§å°åå |
| | | window.addEventListener("resize", () => { |
| | | nextTick(() => { |
| | |
| | | const isPortrait = ref(checkOrientation() === 'portrait'); |
| | | |
| | | onActivated(() => { |
| | | // ç¼åé¡µé¢ æå¼é¡µé¢ å®ç°ææ¾ |
| | | // const video = document.getElementById("video"); |
| | | // video.paused && video.play(); |
| | | ["video_left", "video_right"].forEach((id) => { |
| | | const video = document.getElementById(id); |
| | | if (video && video.paused) video.play(); |
| | |
| | | // 页é¢åç¨ |
| | | |
| | | onDeactivated(() => { |
| | | // ç¼åé¡µé¢ ç¦»å¼é¡µé¢ å®ç°æå |
| | | // const video = document.getElementById("video"); |
| | | // video.play && video.pause(); |
| | | ["video_left", "video_right"].forEach((id) => { |
| | | const video = document.getElementById(id); |
| | | if (video && !video.paused) video.pause(); |