From a035d06975c9cef97fb296b9a09de6925d81d823 Mon Sep 17 00:00:00 2001
From: husq <931347610@qq.com>
Date: Tue, 26 Sep 2023 11:12:14 +0800
Subject: [PATCH] 处理视频关闭问题

---
 src/components/GMap.vue                |   24 +++++++++++++++++++++---
 src/components/Jessibuca/Jessibuca.vue |    4 +++-
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/src/components/GMap.vue b/src/components/GMap.vue
index 83938f5..c407ae2 100644
--- a/src/components/GMap.vue
+++ b/src/components/GMap.vue
@@ -373,7 +373,7 @@
       </div>
       <a-row class="p5" v-if="showMonitor" justify="center" align="middle">
         <!-- <a-spin :spinning="spinning"> -->
-          <Jessibuca v-if="airPortUrl" :videoUrl="airPortUrl" width="100%" height="300px" />
+          <Jessibuca v-if="airPortUrl" @timeout="airTimeout" :videoUrl="airPortUrl" width="100%" height="300px" />
         <!-- </a-spin> -->
       </a-row>
       <!--  飞机-->
@@ -417,7 +417,7 @@
       <!-- 飞机直播 -->
       <a-row class="p5" v-if="showAircraft">
         <!-- <a-spin :spinning="spinning"> -->
-          <Jessibuca v-if="aircraftUrl" :videoUrl="aircraftUrl" width="100%" height="300px" />
+          <Jessibuca v-if="aircraftUrl" @timeout="flyTimeout" :videoUrl="aircraftUrl" width="100%" height="300px" />
         <!-- </a-spin> -->
       </a-row>
       <!-- 飞机图标信息 -->
@@ -905,8 +905,24 @@
           message.error(error)
         })
     }
+    // 机场视频超时说明可能直播被关闭需要重新开启直播
+    const airTimeout = () => {
+      try {
+        onStart()
+      } catch (e) {
+        onClose()
+      }
+    }
+    const flyTimeout = () => {
+      try {
+        flyOnStart()
+      } catch (e) {
+        closeFly()
+      }
+    }
     // 设备开始播放
     const onStart = async () => {
+      airPortUrl.value = ''
       const videoId = droneList.value[droneIndex.value].value + '/' + cameraList.value[cameraIndex.value].value + '/' + videoList.value[videoIndex.value].value
       const streamId = droneList.value[droneIndex.value].value + '-' + cameraList.value[cameraIndex.value].value + '-' + videoList.value[videoIndex.value].value
       const liveURL = config.rtmpURL + streamId
@@ -1315,7 +1331,9 @@
       closeOsdWindow,
       openDroneControl,
       openFlySetting,
-      openDeviceSetting
+      openDeviceSetting,
+      airTimeout,
+      flyTimeout
     }
   }
 })
diff --git a/src/components/Jessibuca/Jessibuca.vue b/src/components/Jessibuca/Jessibuca.vue
index 618d06d..2a98fc4 100644
--- a/src/components/Jessibuca/Jessibuca.vue
+++ b/src/components/Jessibuca/Jessibuca.vue
@@ -3,7 +3,7 @@
 </template>
 
 <script setup lang="ts">
-import { onMounted, onUnmounted, ref, defineProps } from 'vue'
+import { onMounted, onUnmounted, ref, defineProps, defineEmits } from 'vue'
 import Jessibuca from '../../../public/jessibuca/jessibuca'
 const props = defineProps({
   videoUrl: {
@@ -19,6 +19,7 @@
     default: '200px'
   }
 })
+const emits = defineEmits(['timeout'])
 let jessibuca: null | Jessibuca = null
 const container = ref(null)
 const buffer = ref(null)
@@ -107,6 +108,7 @@
 
   jessibuca.on('timeout', function () {
     console.log('timeout')
+    emits('timeout')
   })
 
   jessibuca.on('start', function () {

--
Gitblit v1.9.3