mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-06 11:15:21 +03:00
Move autotracker start to app.py
This commit is contained in:
parent
a5f407dba8
commit
98c161bdde
@ -40,6 +40,7 @@ from frigate.object_processing import TrackedObjectProcessor
|
|||||||
from frigate.output import output_frames
|
from frigate.output import output_frames
|
||||||
from frigate.plus import PlusApi
|
from frigate.plus import PlusApi
|
||||||
from frigate.ptz import OnvifController
|
from frigate.ptz import OnvifController
|
||||||
|
from frigate.ptz_autotrack import PtzAutoTrackerThread
|
||||||
from frigate.record.record import manage_recordings
|
from frigate.record.record import manage_recordings
|
||||||
from frigate.stats import StatsEmitter, stats_init
|
from frigate.stats import StatsEmitter, stats_init
|
||||||
from frigate.storage import StorageMaintainer
|
from frigate.storage import StorageMaintainer
|
||||||
@ -327,6 +328,15 @@ class FrigateApp:
|
|||||||
detector_config,
|
detector_config,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def start_ptz_autotracker(self) -> None:
|
||||||
|
self.ptz_autotracker_thread = PtzAutoTrackerThread(
|
||||||
|
self.config,
|
||||||
|
self.dispatcher.onvif,
|
||||||
|
self.dispatcher.camera_metrics,
|
||||||
|
self.stop_event,
|
||||||
|
)
|
||||||
|
self.ptz_autotracker_thread.start()
|
||||||
|
|
||||||
def start_detected_frames_processor(self) -> None:
|
def start_detected_frames_processor(self) -> None:
|
||||||
self.detected_frames_processor = TrackedObjectProcessor(
|
self.detected_frames_processor = TrackedObjectProcessor(
|
||||||
self.config,
|
self.config,
|
||||||
@ -336,6 +346,7 @@ class FrigateApp:
|
|||||||
self.event_processed_queue,
|
self.event_processed_queue,
|
||||||
self.video_output_queue,
|
self.video_output_queue,
|
||||||
self.recordings_info_queue,
|
self.recordings_info_queue,
|
||||||
|
self.ptz_autotracker_thread,
|
||||||
self.stop_event,
|
self.stop_event,
|
||||||
)
|
)
|
||||||
self.detected_frames_processor.start()
|
self.detected_frames_processor.start()
|
||||||
@ -488,6 +499,7 @@ class FrigateApp:
|
|||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
self.start_detectors()
|
self.start_detectors()
|
||||||
self.start_video_output_processor()
|
self.start_video_output_processor()
|
||||||
|
self.start_ptz_autotracker()
|
||||||
self.start_detected_frames_processor()
|
self.start_detected_frames_processor()
|
||||||
self.start_camera_processors()
|
self.start_camera_processors()
|
||||||
self.start_camera_capture_processes()
|
self.start_camera_capture_processes()
|
||||||
@ -531,6 +543,7 @@ class FrigateApp:
|
|||||||
|
|
||||||
self.dispatcher.stop()
|
self.dispatcher.stop()
|
||||||
self.detected_frames_processor.join()
|
self.detected_frames_processor.join()
|
||||||
|
self.ptz_autotracker_thread.join()
|
||||||
self.event_processor.join()
|
self.event_processor.join()
|
||||||
self.event_cleanup.join()
|
self.event_cleanup.join()
|
||||||
self.stats_emitter.join()
|
self.stats_emitter.join()
|
||||||
|
|||||||
@ -240,7 +240,10 @@ class TrackedObject:
|
|||||||
significant_change = True
|
significant_change = True
|
||||||
|
|
||||||
# update autotrack every second? or fps?
|
# update autotrack every second? or fps?
|
||||||
if self.obj_data["frame_time"] - self.previous["frame_time"] > 1:
|
if (
|
||||||
|
self.obj_data["frame_time"] - self.previous["frame_time"]
|
||||||
|
> 0.5 # / self.camera_config.detect.fps
|
||||||
|
):
|
||||||
autotracker_update = True
|
autotracker_update = True
|
||||||
|
|
||||||
self.obj_data.update(obj_data)
|
self.obj_data.update(obj_data)
|
||||||
@ -619,7 +622,7 @@ class CameraState:
|
|||||||
frame_time, current_detections[id]
|
frame_time, current_detections[id]
|
||||||
)
|
)
|
||||||
|
|
||||||
if autotracker_update:
|
if autotracker_update or significant_update:
|
||||||
for c in self.callbacks["autotrack"]:
|
for c in self.callbacks["autotrack"]:
|
||||||
c(self.name, updated_obj, frame_time)
|
c(self.name, updated_obj, frame_time)
|
||||||
|
|
||||||
@ -763,6 +766,7 @@ class TrackedObjectProcessor(threading.Thread):
|
|||||||
event_processed_queue,
|
event_processed_queue,
|
||||||
video_output_queue,
|
video_output_queue,
|
||||||
recordings_info_queue,
|
recordings_info_queue,
|
||||||
|
ptz_autotracker_thread,
|
||||||
stop_event,
|
stop_event,
|
||||||
):
|
):
|
||||||
threading.Thread.__init__(self)
|
threading.Thread.__init__(self)
|
||||||
@ -778,9 +782,7 @@ class TrackedObjectProcessor(threading.Thread):
|
|||||||
self.camera_states: dict[str, CameraState] = {}
|
self.camera_states: dict[str, CameraState] = {}
|
||||||
self.frame_manager = SharedMemoryFrameManager()
|
self.frame_manager = SharedMemoryFrameManager()
|
||||||
self.last_motion_detected: dict[str, float] = {}
|
self.last_motion_detected: dict[str, float] = {}
|
||||||
self.ptz_autotracker_thread = PtzAutoTrackerThread(
|
self.ptz_autotracker_thread = ptz_autotracker_thread
|
||||||
config, dispatcher.onvif, dispatcher.camera_metrics, self.stop_event
|
|
||||||
)
|
|
||||||
|
|
||||||
def start(camera, obj: TrackedObject, current_frame_time):
|
def start(camera, obj: TrackedObject, current_frame_time):
|
||||||
self.event_queue.put(
|
self.event_queue.put(
|
||||||
@ -1041,7 +1043,6 @@ class TrackedObjectProcessor(threading.Thread):
|
|||||||
return self.camera_states[camera].current_frame_time
|
return self.camera_states[camera].current_frame_time
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
self.ptz_autotracker_thread.start()
|
|
||||||
while not self.stop_event.is_set():
|
while not self.stop_event.is_set():
|
||||||
try:
|
try:
|
||||||
(
|
(
|
||||||
@ -1162,5 +1163,4 @@ class TrackedObjectProcessor(threading.Thread):
|
|||||||
event_id, camera = self.event_processed_queue.get()
|
event_id, camera = self.event_processed_queue.get()
|
||||||
self.camera_states[camera].finished(event_id)
|
self.camera_states[camera].finished(event_id)
|
||||||
|
|
||||||
self.ptz_autotracker_thread.join()
|
|
||||||
logger.info("Exiting object processor...")
|
logger.info("Exiting object processor...")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user