mirror of
https://github.com/blakeblackshear/frigate.git
synced 2024-11-26 19:06:11 +01:00
add thread to write frames to disk
This commit is contained in:
parent
3e374ceb5f
commit
2a86d3e2e8
@ -246,9 +246,7 @@ class ObjectTracker(threading.Thread):
|
|||||||
while True:
|
while True:
|
||||||
frame_time = self.camera.refined_frame_queue.get()
|
frame_time = self.camera.refined_frame_queue.get()
|
||||||
self.match_and_update(self.camera.detected_objects[frame_time])
|
self.match_and_update(self.camera.detected_objects[frame_time])
|
||||||
# f = open(f"/debug/{str(frame_time)}.jpg", 'wb')
|
self.camera.frame_tracked_queue.put(frame_time)
|
||||||
# f.write(self.camera.frame_with_objects(frame_time))
|
|
||||||
# f.close()
|
|
||||||
|
|
||||||
def register(self, index, obj):
|
def register(self, index, obj):
|
||||||
id = f"{str(obj['frame_time'])}-{index}"
|
id = f"{str(obj['frame_time'])}-{index}"
|
||||||
|
@ -107,6 +107,21 @@ class CameraCapture(threading.Thread):
|
|||||||
|
|
||||||
self.camera.fps.update()
|
self.camera.fps.update()
|
||||||
|
|
||||||
|
class VideoWriter(threading.Thread):
|
||||||
|
def __init__(self, camera):
|
||||||
|
threading.Thread.__init__(self)
|
||||||
|
self.camera = camera
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
prctl.set_name("VideoWriter")
|
||||||
|
while True:
|
||||||
|
frame_time = self.camera.frame_tracked_queue.get()
|
||||||
|
if len(self.camera.detected_objects[frame_time]) == 0:
|
||||||
|
continue
|
||||||
|
f = open(f"/debug/{self.camera.name}-{str(frame_time)}.jpg", 'wb')
|
||||||
|
f.write(self.camera.frame_with_objects(frame_time))
|
||||||
|
f.close()
|
||||||
|
|
||||||
class Camera:
|
class Camera:
|
||||||
def __init__(self, name, ffmpeg_config, global_objects_config, config, prepped_frame_queue, mqtt_client, mqtt_prefix):
|
def __init__(self, name, ffmpeg_config, global_objects_config, config, prepped_frame_queue, mqtt_client, mqtt_prefix):
|
||||||
self.name = name
|
self.name = name
|
||||||
@ -122,6 +137,7 @@ class Camera:
|
|||||||
self.regions_in_process_lock = mp.Lock()
|
self.regions_in_process_lock = mp.Lock()
|
||||||
self.finished_frame_queue = queue.Queue()
|
self.finished_frame_queue = queue.Queue()
|
||||||
self.refined_frame_queue = queue.Queue()
|
self.refined_frame_queue = queue.Queue()
|
||||||
|
self.frame_tracked_queue = queue.Queue()
|
||||||
|
|
||||||
self.ffmpeg = config.get('ffmpeg', {})
|
self.ffmpeg = config.get('ffmpeg', {})
|
||||||
self.ffmpeg_input = get_ffmpeg_input(self.ffmpeg['input'])
|
self.ffmpeg_input = get_ffmpeg_input(self.ffmpeg['input'])
|
||||||
@ -206,6 +222,10 @@ class Camera:
|
|||||||
self.object_tracker = ObjectTracker(self, 10)
|
self.object_tracker = ObjectTracker(self, 10)
|
||||||
self.object_tracker.start()
|
self.object_tracker.start()
|
||||||
|
|
||||||
|
# start a thread to write tracked frames to disk
|
||||||
|
self.video_writer = VideoWriter(self)
|
||||||
|
self.video_writer.start()
|
||||||
|
|
||||||
# start a thread to publish object scores
|
# start a thread to publish object scores
|
||||||
mqtt_publisher = MqttObjectPublisher(self.mqtt_client, self.mqtt_topic_prefix, self.objects_parsed, self.detected_objects, self.best_frames)
|
mqtt_publisher = MqttObjectPublisher(self.mqtt_client, self.mqtt_topic_prefix, self.objects_parsed, self.detected_objects, self.best_frames)
|
||||||
mqtt_publisher.start()
|
mqtt_publisher.start()
|
||||||
|
Loading…
Reference in New Issue
Block a user