def _test_engine(self, mp4_filename, game_lang=None): from ikalog.utils import Localization if game_lang: Localization.set_game_languages(game_lang) from ikalog.inputs import CVFile from ikalog.engine import IkaEngine from ikalog.outputs.preview import Screen from ikalog.outputs.debug import DebugLog self.errors = [] source = CVFile() source.start_video_file(mp4_filename) source.need_resize = True outputPlugins = [ self, Screen(0, size=(640, 360)), # DebugLog(dir='./debug/', screenshot=True), ] self.engine = IkaEngine() self.engine.set_capture(source) self.engine.set_plugins(outputPlugins) self.engine.pause(False) print('Engine started') try: self.engine.run() except EOFError: pass print('Engine stopped') # 期待されたイベントが全て発生しているか確認 for event_name in list(self.event_tickets.keys()): if self.event_tickets[event_name] is None: continue assert self.event_tickets[ event_name] == 0, 'Missed event %s? %s tickets remained.' % ( event_name, self.event_tickets[event_name]) assert len(self.errors) == 0, '\n'.join(self.errors) # unreference the engine engine = self.engine self.engine = None return engine
def __init__(self, file): self.file = file # インプットとして指定されたファイルを読む source = CVCapture() source.start_recorded_file(file) source.need_resize = True # 画面が見えないと進捗が判らないので screen = outputs.Screen(0, size=(640, 360)) # プラグインとして自分自身(画面)を設定しコールバックを受ける outputPlugins = [self, screen] # IkaEngine を実行 self.engine = IkaEngine() self.engine.pause(False) self.engine.set_capture(source) self.engine.set_plugins(outputPlugins) self.engine.run()
def _test_engine(self, mp4_filename): from ikalog.inputs.cvcapture import CVCapture from ikalog.engine import IkaEngine from ikalog.outputs.preview import Screen from ikalog.outputs.debug import DebugLog self.errors = [] source = CVCapture() source.start_recorded_file(mp4_filename) source.need_resize = True outputPlugins = [ self, Screen(0, size=(640, 360)), DebugLog(dir='./debug/', screenshot=True), ] self.engine = IkaEngine() self.engine.set_capture(source) self.engine.set_plugins(outputPlugins) self.engine.pause(False) print('Engine started') self.engine.run() print('Engine stopped') # 期待されたイベントが全て発生しているか確認 for event_name in list(self.event_tickets.keys()): if self.event_tickets[event_name] is None: continue assert self.event_tickets[event_name] == 0, 'Missed event %s? %s tickets remained.' % ( event_name, self.event_tickets[event_name]) assert len(self.errors) == 0, '\n'.join(self.errors) # unreference the engine engine = self.engine self.engine = None return engine
def get_pos_msec(args): if args['time_msec']: return args['time_msec'] elif args['time']: minute, sec = args['time'].split(':') return (int(minute) * 60 + int(sec)) * 1000 else: return 0 if __name__ == "__main__": signal.signal(signal.SIGINT, signal_handler) args = get_args() capture, output_plugins = config_loader.config(args) capture.set_pos_msec(get_pos_msec(args)) engine = IkaEngine(enable_profile=args.get('profile')) engine.pause(False) engine.set_capture(capture) engine.set_plugins(output_plugins) for op in output_plugins: engine.enable_plugin(op) engine.close_session_at_eof = True engine.run() IkaUtils.dprint('bye!')
def get_pos_msec(args): if args['time_msec']: return args['time_msec'] elif args['time']: minute, sec = args['time'].split(':') return (int(minute) * 60 + int(sec)) * 1000 else: return 0 if __name__ == "__main__": signal.signal(signal.SIGINT, signal_handler) args = get_args() capture, output_plugins = config_loader.config(args) capture.set_pos_msec(get_pos_msec(args)) engine = IkaEngine(enable_profile=args.get('profile'), keep_alive=args.get('keep_alive')) engine.pause(False) engine.set_capture(capture) engine.set_plugins(output_plugins) for op in output_plugins: engine.enable_plugin(op) engine.close_session_at_eof = True IkaUtils.dprint('IkaLog: start.') engine.run() IkaUtils.dprint('bye!')