From 076e6d0030843bcc679ebc939a04f5ce8bfeb269 Mon Sep 17 00:00:00 2001 From: Jules Date: Thu, 9 Apr 2026 01:44:46 +0200 Subject: [PATCH] Canon LiveView : activer viewfinder gphoto2 avant capture_preview --- backend/camera.py | 26 ++++++++++++++++++++++++++ backend/main.py | 2 ++ 2 files changed, 28 insertions(+) diff --git a/backend/camera.py b/backend/camera.py index d8053fb..fc507a2 100644 --- a/backend/camera.py +++ b/backend/camera.py @@ -199,6 +199,32 @@ class Camera: else: return None # Pas de simulation ni webcam en dehors du mode dedie + def activer_viewfinder(self): + """Active le LiveView sur les Canon (nécessaire avant capture_preview).""" + if self.mode != "gphoto2" or not self.connectee: + return + try: + cfg = self.camera.get_config() + vf = cfg.get_child_by_name("viewfinder") + vf.set_value(1) + self.camera.set_config(cfg) + log.info("Viewfinder activé") + except Exception as e: + log.warning(f"Viewfinder non supporté : {e}") + + def desactiver_viewfinder(self): + """Désactive le LiveView.""" + if self.mode != "gphoto2" or not self.connectee: + return + try: + cfg = self.camera.get_config() + vf = cfg.get_child_by_name("viewfinder") + vf.set_value(0) + self.camera.set_config(cfg) + log.info("Viewfinder désactivé") + except Exception as e: + log.warning(f"Viewfinder non supporté : {e}") + def _preview_gphoto2(self) -> bytes | None: try: fichier = self.camera.capture_preview() diff --git a/backend/main.py b/backend/main.py index 6625734..e1a561d 100644 --- a/backend/main.py +++ b/backend/main.py @@ -686,9 +686,11 @@ async def traiter_message_ws(msg: dict, ws: WebSocket): await ws.send_json({"type": "pong"}) elif type_msg == "preview_start": global _preview_actif + camera.activer_viewfinder() _preview_actif = True elif type_msg == "preview_stop": _preview_actif = False + camera.desactiver_viewfinder() async def diffuser_ws(message: dict):