mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-03-31 12:24:55 +03:00
ensure previews dir exists
when ffmpeg processes restart, there's a brief window where the preview frame generation pipeline is torn down and restarted. before these changes, ffmpeg only restarted on crash/stall recovery or full Frigate restart. Now that ffmpeg restarts happen on-demand via config changes, there's a higher chance a frontend request hits the preview_mp4 or preview_gif endpoints during that brief restart window when the directory might not exist yet. The existing os.listdir() call would throw FileNotFoundError without a directory existence check. this fix just checks if the directory exists and returns 404 if not, exactly how preview_thumbnail already handles the same scenario a few lines below
This commit is contained in:
parent
fb4ddc41c1
commit
d73f28807f
@ -1263,6 +1263,13 @@ def preview_gif(
|
|||||||
else:
|
else:
|
||||||
# need to generate from existing images
|
# need to generate from existing images
|
||||||
preview_dir = os.path.join(CACHE_DIR, "preview_frames")
|
preview_dir = os.path.join(CACHE_DIR, "preview_frames")
|
||||||
|
|
||||||
|
if not os.path.isdir(preview_dir):
|
||||||
|
return JSONResponse(
|
||||||
|
content={"success": False, "message": "Preview not found"},
|
||||||
|
status_code=404,
|
||||||
|
)
|
||||||
|
|
||||||
file_start = f"preview_{camera_name}"
|
file_start = f"preview_{camera_name}"
|
||||||
start_file = f"{file_start}-{start_ts}.{PREVIEW_FRAME_TYPE}"
|
start_file = f"{file_start}-{start_ts}.{PREVIEW_FRAME_TYPE}"
|
||||||
end_file = f"{file_start}-{end_ts}.{PREVIEW_FRAME_TYPE}"
|
end_file = f"{file_start}-{end_ts}.{PREVIEW_FRAME_TYPE}"
|
||||||
@ -1438,6 +1445,13 @@ def preview_mp4(
|
|||||||
else:
|
else:
|
||||||
# need to generate from existing images
|
# need to generate from existing images
|
||||||
preview_dir = os.path.join(CACHE_DIR, "preview_frames")
|
preview_dir = os.path.join(CACHE_DIR, "preview_frames")
|
||||||
|
|
||||||
|
if not os.path.isdir(preview_dir):
|
||||||
|
return JSONResponse(
|
||||||
|
content={"success": False, "message": "Preview not found"},
|
||||||
|
status_code=404,
|
||||||
|
)
|
||||||
|
|
||||||
file_start = f"preview_{camera_name}"
|
file_start = f"preview_{camera_name}"
|
||||||
start_file = f"{file_start}-{start_ts}.{PREVIEW_FRAME_TYPE}"
|
start_file = f"{file_start}-{start_ts}.{PREVIEW_FRAME_TYPE}"
|
||||||
end_file = f"{file_start}-{end_ts}.{PREVIEW_FRAME_TYPE}"
|
end_file = f"{file_start}-{end_ts}.{PREVIEW_FRAME_TYPE}"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user