Catch case where segment is bad length (#4228)

* Catch case where segment is bad length

* Log ffprobe error code and error
This commit is contained in:
Nicolas Mowen 2022-11-02 05:37:27 -06:00 committed by GitHub
parent d8123d2497
commit 2a36a1b980
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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