Преглед на файлове

摄像头从离线恢复上线后自动触发RTSP重连

lsfoo преди 3 месеца
родител
ревизия
d7d7455356
променени са 1 файла, в които са добавени 11 реда и са изтрити 0 реда
  1. 11 0
      hookvision/main_window.py

+ 11 - 0
hookvision/main_window.py

@@ -1263,7 +1263,18 @@ class MainWindow(QMainWindow):
         self.camera_signal_signal.emit(results)
 
     def _on_camera_signal(self, results: dict):
+        was_offline = {ip for ip, lat in self._camera_signal.items() if lat is not None and lat < 0}
         self._camera_signal.update(results)
+        now_online = {ip for ip, lat in results.items() if lat >= 0}
+        revived = now_online & was_offline
+        if revived and self.active_bucket:
+            for cam in self.active_bucket.cameras:
+                m = re.search(r'rtsp://(?:[^@]+@)?([^:/]+)', cam.rtsp_url)
+                if m and m.group(1) in revived:
+                    side = "left" if cam.position == CameraPosition.LEFT else "right"
+                    cur = self.left_player if side == "left" else self.right_player
+                    if cur is None:
+                        self._retry_rtsp(side)
         for bucket in self.buckets:
             bars = self._bucket_signal_labels.get(bucket.id)
             if not bars: