mydocker/timelapse_service/README.md

2.4 KiB

Timelapse Service - Camera Timelapse Generator

Cron-based service generating timelapse videos from camera recordings. Processes Hikvision/Reolink JPG frames and creates MP4 files for various time periods.

How It Works

  1. Cameras save JPG frames to /media/seagata16t/hikvision16t/<camera>/<date>/
  2. Cron in container triggers timelapse_maker.py with the appropriate parameter
  3. Script collects JPGs, stitches via ffmpeg (libx264, 1920x1080, 30fps) into MP4
  4. Results saved to /media/seagata16t/all_timelapses/
  5. On each today run, deletes JPG directories older than 7 days

Cameras

reolink_1, reolink_2, reolink_3, reolink_4, reolink_5, hikvision_2, hikvision_4

Parallel processing: 2 concurrent processes (Pool(processes=2)).

Cron Schedule

When Command Description
Daily 23:59 timelapse_maker.py today Today's timelapse + cleanup old JPGs
Weekly timelapse_maker.py week Weekly timelapse (target: 120s)
Monthly timelapse_maker.py month Previous month (target: 180s)
Dec 31 23:09 timelapse_maker.py year Previous year (target: 300s)

For week, month, year - the script merges daily MP4s and speeds up to the target duration.

CLI Parameters

python3 timelapse_maker.py today            # Today
python3 timelapse_maker.py 2025-01-15      # Specific date
python3 timelapse_maker.py week            # Current week
python3 timelapse_maker.py month           # Previous month
python3 timelapse_maker.py year            # Previous year
python3 timelapse_maker.py today --cleanup # Force JPG cleanup

Paths

Source JPGs /media/seagata16t/hikvision16t/<camera>/<YYYY-MM-DD>/
Output MP4s /media/seagata16t/all_timelapses/timelapse_<camera>_<period>.mp4
Cron logs /var/log/cron.log inside container

Useful Commands

# Follow container logs
docker compose logs -f timelapse-service

# Manual run for a specific date
docker exec timelapse-service python3 /usr/src/app/timelapse_maker.py 2025-06-01

# Manual weekly timelapse
docker exec timelapse-service python3 /usr/src/app/timelapse_maker.py week

# Check cron logs inside container
docker exec timelapse-service tail -100 /var/log/cron.log

# Rebuild
docker compose build timelapse-service && docker compose up -d timelapse-service