From 2a36a1b98093baf333991c0f71f27373552daff5 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Wed, 2 Nov 2022 05:37:27 -0600 Subject: [PATCH] Catch case where segment is bad length (#4228) * Catch case where segment is bad length * Log ffprobe error code and error --- frigate/record.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/frigate/record.py b/frigate/record.py index 21e42dfc0..51e4a9d70 100644 --- a/frigate/record.py +++ b/frigate/record.py @@ -169,9 +169,19 @@ class RecordingMaintainer(threading.Thread): p = sp.run(ffprobe_cmd, capture_output=True) if p.returncode == 0 and p.stdout.decode(): duration = float(p.stdout.decode().strip()) + else: + duration = -1 + + # ensure duration is within expected length + if 0 < duration < 600: end_time = start_time + datetime.timedelta(seconds=duration) self.end_time_cache[cache_path] = (end_time, duration) else: + if duration == -1: + logger.warning( + f"Failed to probe corrupt segment {f}: {p.returncode} - {p.stderr}" + ) + logger.warning(f"Discarding a corrupt recording segment: {f}") Path(cache_path).unlink(missing_ok=True) continue