def start_liveview_server_process(self): try: res = self.camera_api('startLiveview', []) self.liveview_server_proc = LiveviewServerProccess(res['result'][0], "remotetrain/liveview", self.liveview_server_address, self.liveview_server_port) self.liveview_server_proc.start() except Exception as e: logger.exception("Failed to start liveview streaming.") else: logger.info("Liveview server started.")
class CameraAPI: """ カメラAPアクセスクラス """ json_request = { "method": "", "params": [], "id": 1, "version": "1.0" } liveview_server_address = "192.168.1.18" # liveview_server_address = "127.0.0.1" liveview_server_port = 9000 def __init__(self, iface): self.iface = iface self.liveview_server_proc = None logger.info("Initializing camera API...") try: self.model_name, self.endpoints = discover_sony_camera(self.iface) self.is_available = True self.start_liveview_server_process() self.camera_api('startRecMode', []) except Exception as e: self.is_available = False logger.exception("Camera API is not available now.") return None logger.info("Camera API is ready to use.") def __del__(self): logger.info("Destructing camera API...") if self.liveview_server_proc: self.liveview_server_proc.stop() logger.info("Camera API has been destructed.") def camera_api(self, method, params): if self.is_available: self.json_request['method'] = method self.json_request['params'] = params try: res = requests.post(self.endpoints['camera'], data=json.dumps(self.json_request)) except Exception as e: logger.error("Failed to execute API. method='{0}, params={1}'".format(method, params)) return None else: return json.loads(res.content.decode('utf-8')) else: logger.error("Camera API is not available. method='{0}, params={1}'".format(method, params)) def avContent_api(self, method, params): if self.is_available: self.json_request['method'] = method self.json_request['params'] = params try: res = requests.post(self.endpoints['avContent'], data=self.json_request) except Exception as e: logger.error("Failed to execute API. method='{0}, params={1}'".format(method, params)) return None else: return json.loads(res.content.decode('utf-8')) else: logger.error("Camera API is not available. method='{0}, params={1}'".format(method, params)) def start_liveview_server_process(self): try: res = self.camera_api('startLiveview', []) self.liveview_server_proc = LiveviewServerProccess(res['result'][0], "remotetrain/liveview", self.liveview_server_address, self.liveview_server_port) self.liveview_server_proc.start() except Exception as e: logger.exception("Failed to start liveview streaming.") else: logger.info("Liveview server started.")