Esempio n. 1
0
 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.")
Esempio n. 2
0
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.")