blakeblackshear.frigate/frigate/output.py

40 lines
1.0 KiB
Python
Raw Normal View History

import queue
2021-05-29 20:33:01 +02:00
import signal
import multiprocessing as mp
from multiprocessing import shared_memory
from frigate.util import SharedMemoryFrameManager
2021-05-29 20:33:01 +02:00
def output_frames(config, video_output_queue):
stop_event = mp.Event()
def receiveSignal(signalNumber, frame):
stop_event.set()
signal.signal(signal.SIGTERM, receiveSignal)
signal.signal(signal.SIGINT, receiveSignal)
frame_manager = SharedMemoryFrameManager()
previous_frames = {}
2021-05-29 20:33:01 +02:00
while not stop_event.is_set():
try:
(
camera,
frame_time,
current_tracked_objects,
motion_boxes,
regions,
) = video_output_queue.get(True, 10)
except queue.Empty:
continue
frame_id = f"{camera}{frame_time}"
frame = frame_manager.get(frame_id, config.cameras[camera].frame_shape_yuv)
if camera in previous_frames:
frame_manager.delete(previous_frames[camera])
previous_frames[camera] = frame_id