Add north/south cameras, remove fullday, add verify-mvt.sh

- sky-cam.conf: CAMERAS now includes east, north, south with staggered
  SCHEDULE_SEASONS times (01:00, 01:30, 02:00); fullday schedules and
  tuning removed
- install.sh: fullday service/timer generation removed entirely
- fullday-video.sh + systemd units: deleted
- montage-mvt.sh: post-build technical checks (duration drift, video/audio
  stream presence) added; notification now includes check results and the
  exact verify-mvt.sh command to run
- verify-mvt.sh: new interactive CLI for montage review — shows checks,
  plays video, deletes source JPEG folders on approval, or re-runs montage

https://claude.ai/code/session_01C4jbd3waXG3eKZYbGUjLUQ
This commit is contained in:
Claude
2026-04-20 15:56:12 +00:00
parent 04809cfe90
commit b4019ade9d
7 changed files with 225 additions and 130 deletions
+7 -23
View File
@@ -48,9 +48,6 @@
# on the last day of a movement, auto-triggers
# montage-mvt.sh
#
# fullday-video.sh <cam> — daily at SCHEDULE_FULLDAY_<cam> (via systemd, per camera)
# full-day timelapse at fixed fps; deletes videos
# older than RETENTION_DAYS automatically
#
# install.sh — run once at setup, and again if this file changes
# generates and installs systemd units from conf
@@ -104,11 +101,6 @@
# then re-run install.sh
# calls → season_info.py, montage-mvt.sh
#
# fullday-video.sh
# ← called by systemd sky-cam-fullday-<cam>.timer (SCHEDULE_FULLDAY_<cam>)
# → if renamed: update install.sh (write_service call ~line 93)
# then re-run install.sh
#
# montage-mvt.sh
# ← called by 4-seasons.sh on the last day of each movement
# → if renamed: update 4-seasons.sh (the exec line near the bottom)
@@ -180,7 +172,7 @@ TIMEZONE=America/New_York
# Each name becomes a subfolder under BASE_DIR (images) and BASE_DIR/movies.
# To add a camera: add its name here, add its schedules below, re-run install.sh.
#
CAMERAS=(east) # e.g. CAMERAS=(east north south west)
CAMERAS=(east north south) # e.g. CAMERAS=(east north south west)
SUNRISE_CAM=east # which camera faces east (gets the sunrise video job)
# ── Schedules ─────────────────────────────────────────────────────────────────
@@ -207,18 +199,15 @@ SUNRISE_CAM=east # which camera faces east (gets the sunrise v
#
SCHEDULE_SUNRISE=03:00:00
# Four Seasons daily clip — one per camera, staggered 30 min apart.
# Processes yesterday's images; on the last day of a movement auto-triggers
# montage-mvt.sh. Space cameras at least 30 min apart to avoid disk contention.
SCHEDULE_SEASONS_east=01:00:00
SCHEDULE_FULLDAY_east=02:00:00
SCHEDULE_SEASONS_north=01:30:00
SCHEDULE_SEASONS_south=02:00:00
# Uncomment and fill in for each camera you add to CAMERAS above:
#SCHEDULE_SEASONS_north=01:30:00
#SCHEDULE_FULLDAY_north=02:30:00
#
#SCHEDULE_SEASONS_south=02:00:00
#SCHEDULE_FULLDAY_south=03:00:00
#
# Add more cameras here:
#SCHEDULE_SEASONS_west=02:30:00
#SCHEDULE_FULLDAY_west=03:30:00
# ── Sunrise video tuning ──────────────────────────────────────────────────────
# Capture window around sunrise:
@@ -235,10 +224,6 @@ SUNRISE_OVERLAY_ENABLED=true
# Opacity of the sunrise-time text (0.0 = invisible, 1.0 = fully opaque).
SUNRISE_OVERLAY_OPACITY=0.45
# ── Full-day timelapse tuning ─────────────────────────────────────────────────
FULLDAY_FPS=5 # frame rate of the timelapse video
RETENTION_DAYS=10 # delete full-day videos older than this many days
# ── Video encoding quality ────────────────────────────────────────────────────
# FFmpeg CRF: lower = higher quality / larger files. Typical range 1830.
# 18 ≈ visually lossless 23 = ffmpeg default 28 = smaller/lower
@@ -248,7 +233,6 @@ RETENTION_DAYS=10 # delete full-day videos older than this many days
# Each is independent — changing one does NOT change the others.
#
CRF_SUNRISE=28 # daily_sunrise_video.sh — daily Mattermost upload
CRF_FULLDAY=28 # fullday-video.sh — full-day timelapse
CRF_SEASONS_RAW=28 # 4-seasons.sh — raw concat before speed-adjust
CRF_SEASONS_FINAL=26 # 4-seasons.sh — final daily clip (goes into montage)
CRF_MONTAGE=26 # montage-mvt.sh — concat and speed-adjust and final