4-seasons: remove per-frame ffprobe validation — too slow at scale

43k images × ffprobe process launch = 30-90 min before encoding starts.
Every corrupt file seen in practice has been 0-byte (caught instantly by
[ ! -s ]).  Non-zero corrupt files are rare; if ffmpeg hits one the
existing drift warning flags the short output.  Removing ffprobe restores
the fast path: one stat() call per image.

https://claude.ai/code/session_01C4jbd3waXG3eKZYbGUjLUQ
This commit is contained in:
Claude
2026-04-23 01:52:38 +00:00
parent 3f5b89e5da
commit a9faa63cd9
+1 -8
View File
@@ -102,18 +102,11 @@ GREY_MIN="${SEASONS_GREY_STDDEV_MIN:-0}"
GREY_DARK_FLOOR="${SEASONS_GREY_DARK_FLOOR:-30}" # frames darker than this are never skipped
images=(); bad=0; grey=0
for img in "${all_images[@]}"; do
# Empty or unreadable
# Skip empty or unreadable files (0-byte writes from camera reconnects)
if [ ! -r "$img" ] || [ ! -s "$img" ]; then
echo "WARNING: skipping empty/missing frame: $(basename "$img")"
((bad++)) || true; continue
fi
# Corrupt JPEG — ffprobe can't identify any video stream
if ! ffprobe -v quiet -select_streams v:0 \
-show_entries stream=codec_name -of csv=p=0 "$img" 2>/dev/null \
| grep -q .; then
echo "WARNING: skipping corrupt frame: $(basename "$img")"
((bad++)) || true; continue
fi
# Optional: skip uniform-grey bad-signal frames.
# A frame is bad-signal if it is BOTH uniform (low stddev) AND not dark.
# Night frames are dark so they pass even with low stddev.