From 6afffb2184e1173b5318756fba03c4b0b6f9f38a Mon Sep 17 00:00:00 2001 From: dsutanto Date: Sat, 11 Jul 2026 10:36:40 +0700 Subject: [PATCH] Fix blnak live stream --- counter_dashboard.py | 6 ++++++ counter_live_rknn.py | 9 ++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/counter_dashboard.py b/counter_dashboard.py index 0ceef5b..298381d 100644 --- a/counter_dashboard.py +++ b/counter_dashboard.py @@ -56,6 +56,12 @@ def api_live_video(): try: with open(LIVE_STREAM_FRAME_PATH, "rb") as f: jpeg = f.read() + if not jpeg or len(jpeg) < 2 or jpeg[:2] != b"\xff\xd8": + consecutive_fails += 1 + if consecutive_fails >= MAX_FAILS: + return + time.sleep(0.05) + continue consecutive_fails = 0 yield (b"--frame\r\n" b"Content-Type: image/jpeg\r\n\r\n" + jpeg + b"\r\n") diff --git a/counter_live_rknn.py b/counter_live_rknn.py index 7c4d9dd..57aadb8 100644 --- a/counter_live_rknn.py +++ b/counter_live_rknn.py @@ -1384,11 +1384,14 @@ def run(): if LIVE_STREAM_ENABLED and frame_idx % LIVE_STREAM_EVERY_N == 0: try: Path(LIVE_STREAM_FRAME_PATH).parent.mkdir(parents=True, exist_ok=True) - _, jpeg = cv2.imencode( + ok, jpeg = cv2.imencode( ".jpg", frame, [cv2.IMWRITE_JPEG_QUALITY, LIVE_STREAM_QUALITY] ) - with open(LIVE_STREAM_FRAME_PATH, "wb") as f: - f.write(jpeg.tobytes()) + if ok: + tmp_path = f"{LIVE_STREAM_FRAME_PATH}.tmp" + with open(tmp_path, "wb") as f: + f.write(jpeg.tobytes()) + os.replace(tmp_path, LIVE_STREAM_FRAME_PATH) except Exception: pass