diff --git a/common/processor_factory.py b/common/processor_factory.py new file mode 100644 index 0000000..c404bd8 --- /dev/null +++ b/common/processor_factory.py @@ -0,0 +1,15 @@ +from biz.checkpoint.checkpoint_biz import FrameProcessorWorker as CheckpointWorker +from biz.prison.trajectory02_biz import FrameProcessorWorker as TrajectoryWorker +from biz.prison.supervision_room_biz import FrameProcessorWorker as SupervisionWorker +# ... 其他导入 + +PROCESSOR_MAP = { + "checkpoint": CheckpointWorker, + "trajectory": TrajectoryWorker, + "supervision_room": SupervisionWorker, +} + +def get_processor(processor_type: str): + if processor_type not in PROCESSOR_MAP: + raise ValueError(f"Unknown processor type: {processor_type}") + return PROCESSOR_MAP[processor_type] \ No newline at end of file diff --git a/hls_service_ws_kadian.py b/hls_service_ws_kadian.py index 883898d..1651321 100644 --- a/hls_service_ws_kadian.py +++ b/hls_service_ws_kadian.py @@ -15,7 +15,11 @@ from dataclasses import dataclass # from biz.checkpoint.checkpoint_biz import FrameProcessorWorker # from biz.prison.prison_biz import FrameProcessorWorker -from biz.prison.trajectory02_biz import FrameProcessorWorker +# from biz.prison.trajectory02_biz import FrameProcessorWorker +# from biz.prison.supervision_room_biz import FrameProcessorWorker + +from common.processor_factory import get_processor + from common.camera_config import CameraConfig, parse_cameras_from_json, parse_cameras_from_yaml from common.contants import init_config from utils.web_socket_sender import WebSocketSender @@ -294,7 +298,7 @@ class HLSKadianService: self.ws_queue = queue.Queue(maxsize=1000) # WebSocket队列 self.frame_processor_workers = [] - self.biz_processor = FrameProcessorWorker(self.raw_queue, self.ws_queue, self.stop_event, self.cameras) + self.biz_processor = get_processor(self.algorithm)(self.raw_queue, self.ws_queue, self.stop_event, self.cameras) self.ws_sender = WebSocketSender(self.ws_queue, self.stop_event, self.ws_host, self.ws_port) def start(self): diff --git a/rtsp_service_ws_kadian.py b/rtsp_service_ws_kadian.py index 330ea2b..a2d5631 100644 --- a/rtsp_service_ws_kadian.py +++ b/rtsp_service_ws_kadian.py @@ -11,7 +11,7 @@ import argparse import threading import queue -from biz.checkpoint.checkpoint_biz import FrameProcessorWorker +from common.processor_factory import get_processor from common.camera_config import CameraConfig, parse_cameras_from_json, parse_cameras_from_yaml from common.contants import init_config from test_cam import get_camera_preview_url @@ -178,7 +178,7 @@ class RTSPService: self.ws_queue = queue.Queue(maxsize=1000) self.capture_workers = [] - self.processor = FrameProcessorWorker(self.raw_queue, self.ws_queue, self.stop_event, self.cameras) + self.biz_processor = get_processor(self.algorithm)(self.raw_queue, self.ws_queue, self.stop_event, self.cameras) self.ws_sender = WebSocketSender(self.ws_queue, self.stop_event, self.ws_host, self.ws_port) def start(self):