From ffaacc0624c9db41c655c8ba3e10cc3742cab750 Mon Sep 17 00:00:00 2001 From: zqc <835569504@qq.com> Date: Fri, 27 Feb 2026 15:20:53 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E8=BF=87=E9=85=8D=E7=BD=AE=E8=B7=AF?= =?UTF-8?q?=E7=94=B1=E4=B8=8D=E5=90=8C=E7=9A=84=E7=AE=97=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/processor_factory.py | 15 +++++++++++++++ hls_service_ws_kadian.py | 8 ++++++-- rtsp_service_ws_kadian.py | 4 ++-- 3 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 common/processor_factory.py 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):