Canon LiveView : activer viewfinder gphoto2 avant capture_preview

This commit is contained in:
2026-04-09 01:44:46 +02:00
parent a59f0ef766
commit 076e6d0030
2 changed files with 28 additions and 0 deletions

View File

@@ -199,6 +199,32 @@ class Camera:
else: else:
return None # Pas de simulation ni webcam en dehors du mode dedie 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: def _preview_gphoto2(self) -> bytes | None:
try: try:
fichier = self.camera.capture_preview() fichier = self.camera.capture_preview()

View File

@@ -686,9 +686,11 @@ async def traiter_message_ws(msg: dict, ws: WebSocket):
await ws.send_json({"type": "pong"}) await ws.send_json({"type": "pong"})
elif type_msg == "preview_start": elif type_msg == "preview_start":
global _preview_actif global _preview_actif
camera.activer_viewfinder()
_preview_actif = True _preview_actif = True
elif type_msg == "preview_stop": elif type_msg == "preview_stop":
_preview_actif = False _preview_actif = False
camera.desactiver_viewfinder()
async def diffuser_ws(message: dict): async def diffuser_ws(message: dict):