Canon LiveView : activer viewfinder gphoto2 avant capture_preview
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
Reference in New Issue
Block a user