Restructure audio into AUDIO_DIR with per-camera retention
New AUDIO_DIR variable (like BASE_DIR/MOVIES_DIR) is the root for all
audio recordings. Set in .env to put audio on a separate drive.
Directory layout:
AUDIO_DIR/<cam>/YYYY-MM-DD/HH-MM-SS.m4a — ambient recordings
AUDIO_DIR/sunrise/<cam>/YYYY-MM-DD/sunrise-audio.m4a — sunrise clips
sky-cam.conf:
- Add AUDIO_DIR="${AUDIO_DIR:-$BASE_DIR/audio}" in storage section
- Remove AMBIENT_DIR (replaced by AUDIO_DIR)
- Add SUNRISE_AUDIO_RETENTION_DAYS=7 (sunrise clips kept separately from ambient)
- Add per-camera ambient retention examples:
AMBIENT_RETENTION_DAYS_south=60 (keep bird recordings longer)
ambient-record.sh:
- Use AUDIO_DIR instead of AMBIENT_DIR
- Per-camera retention: AMBIENT_RETENTION_DAYS_<cam> overrides global default
sunrise-audio-capture.sh:
- Save clips to AUDIO_DIR/sunrise/<cam>/<date>/sunrise-audio.m4a
- Rolling retention of sunrise clips (SUNRISE_AUDIO_RETENTION_DAYS)
daily_sunrise_video.sh:
- Look for cam_audio in new AUDIO_DIR/sunrise path first, fall back to
old BASE_DIR path so existing recordings keep working
install.sh:
- Pre-create AUDIO_DIR/<cam> and AUDIO_DIR/sunrise/<SUNRISE_CAM> dirs
- Add AUDIO_DIR to .env.example storage section
https://claude.ai/code/session_01C4jbd3waXG3eKZYbGUjLUQ
This commit is contained in:
+12
-2
@@ -150,6 +150,9 @@ SCRIPT_DIR="${SCRIPT_DIR:-$(dirname "$(realpath "${BASH_SOURCE[0]}")")}"
|
||||
BASE_DIR="${BASE_DIR:-$SCRIPT_DIR/data}"
|
||||
MOVIES_DIR="${MOVIES_DIR:-$BASE_DIR/movies}" # override if videos live on a different drive
|
||||
MUSIC_DIR="${MUSIC_DIR:-$SCRIPT_DIR/music}"
|
||||
AUDIO_DIR="${AUDIO_DIR:-$BASE_DIR/audio}" # root for all audio recordings; override in .env
|
||||
# Structure: AUDIO_DIR/<cam>/YYYY-MM-DD/HH-MM-SS.m4a (ambient)
|
||||
# AUDIO_DIR/sunrise/<cam>/YYYY-MM-DD/sunrise-audio.m4a (sunrise clips)
|
||||
|
||||
# ── Location & timezone ───────────────────────────────────────────────────────
|
||||
# Used by sunrise.py to calculate sunrise time each day.
|
||||
@@ -321,6 +324,9 @@ AUDIO_ENABLED=false # set true if your camera has a working mic
|
||||
CAPTURE_AUDIO_BITRATE=96k # bitrate for the sunrise audio recording
|
||||
# Audio is recorded for exactly SUNRISE_TARGET_SECS, centred on actual sunrise:
|
||||
# floor(TARGET/2) seconds before, ceil(TARGET/2) after (odd second → post-sunrise).
|
||||
# Clips are saved to AUDIO_DIR/sunrise/<cam>/YYYY-MM-DD/sunrise-audio.m4a.
|
||||
# After mixing into the video the clip is kept for SUNRISE_AUDIO_RETENTION_DAYS, then deleted.
|
||||
SUNRISE_AUDIO_RETENTION_DAYS=7
|
||||
|
||||
# ── Ambient audio library ──────────────────────────────────────────────────────
|
||||
# Continuously records natural sounds (birds, rain, wind) from AMBIENT_CAMS to
|
||||
@@ -330,10 +336,14 @@ CAPTURE_AUDIO_BITRATE=96k # bitrate for the sunrise audio recording
|
||||
#
|
||||
AMBIENT_ENABLED=false
|
||||
AMBIENT_CAMS=(south) # cameras to record from
|
||||
AMBIENT_DIR="${BASE_DIR}/ambient" # root storage directory
|
||||
AMBIENT_CHUNK_SECS=1800 # seconds per file (default 30 min)
|
||||
AMBIENT_BITRATE=96k # AAC bitrate; 64–96k is plenty at 8 kHz
|
||||
AMBIENT_RETENTION_DAYS=30 # delete files older than this; 0 = keep forever
|
||||
# Retention — global default, then optional per-camera overrides.
|
||||
# Uncomment and set per-cam lines to keep different cameras for different durations.
|
||||
AMBIENT_RETENTION_DAYS=30 # global default; 0 = keep forever
|
||||
#AMBIENT_RETENTION_DAYS_east=14
|
||||
#AMBIENT_RETENTION_DAYS_north=30
|
||||
#AMBIENT_RETENTION_DAYS_south=60 # keep south longer for nature sound library
|
||||
|
||||
# ── Mattermost — daily sunrise upload ─────────────────────────────────────────
|
||||
# mattermost_url, access_token, channel_id go in .env (see bottom of this file).
|
||||
|
||||
Reference in New Issue
Block a user