| name | verify |
| description | Build and drive the lapsify CLI end to end to verify changes at its real surface. |
Verifying lapsify
Single-crate Rust CLI. Requires ffmpeg on PATH for video output.
Build & run
cargo build --release
Generate test frames (no camera needed)
mkdir -p /tmp/lv/frames
for i in 0 1 2 3 4; do
ffmpeg -y -loglevel error -f lavfi -i "color=c=0x808080:size=320x240" \
-frames:v 1 /tmp/lv/frames/f_0$i.png
done
Flows worth driving
target/release/lapsify -i /tmp/lv/frames -o /tmp/lv/imgs -e "-1,1" -f jpg
ffmpeg -i /tmp/lv/imgs/f_00_processed.jpg \
-vf "signalstats,metadata=print:key=lavfi.signalstats.YAVG" -f null - 2>&1 | grep -o "YAVG=[0-9.]*"
target/release/lapsify --project project.json
ffprobe -v error -count_frames -show_entries \
stream=codec_name,width,height,nb_read_frames -of csv=p=0 out/timelapse.mp4
target/release/lapsify --project project.json --progress json 2>/dev/null
Gotchas
- Human-readable output goes to stderr; piping stdout through
head mid-run
kills the process (SIGPIPE) and leaves partial output — capture fully.
- Video needs even dimensions; the encoder handles it, but ffprobe the result
rather than assuming.
- Validation (crop bounds, ranges, codec/container rules) happens before any
processing — error probes return fast with exit 1.