handle the stop event in the broadcast threads

This commit is contained in:
Blake Blackshear 2023-02-03 18:34:29 -06:00
parent 600c45246b
commit 4ffce38fc0

View File

@ -109,14 +109,15 @@ class FFMpegConverter:
class BroadcastThread(threading.Thread): class BroadcastThread(threading.Thread):
def __init__(self, camera, converter, websocket_server): def __init__(self, camera, converter, websocket_server, stop_event):
super(BroadcastThread, self).__init__() super(BroadcastThread, self).__init__()
self.camera = camera self.camera = camera
self.converter = converter self.converter = converter
self.websocket_server = websocket_server self.websocket_server = websocket_server
self.stop_event = stop_event
def run(self): def run(self):
while True: while not self.stop_event.is_set():
buf = self.converter.read(65536) buf = self.converter.read(65536)
if buf: if buf:
manager = self.websocket_server.manager manager = self.websocket_server.manager
@ -426,7 +427,7 @@ def output_frames(config: FrigateConfig, video_output_queue):
cam_config.live.quality, cam_config.live.quality,
) )
broadcasters[camera] = BroadcastThread( broadcasters[camera] = BroadcastThread(
camera, converters[camera], websocket_server camera, converters[camera], websocket_server, stop_event
) )
if config.birdseye.enabled: if config.birdseye.enabled:
@ -439,7 +440,7 @@ def output_frames(config: FrigateConfig, video_output_queue):
config.birdseye.restream, config.birdseye.restream,
) )
broadcasters["birdseye"] = BroadcastThread( broadcasters["birdseye"] = BroadcastThread(
"birdseye", converters["birdseye"], websocket_server "birdseye", converters["birdseye"], websocket_server, stop_event
) )
websocket_thread.start() websocket_thread.start()