2.4 KiB
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
- Cameras save JPG frames to
/media/seagata16t/hikvision16t/<camera>/<date>/ - Cron in container triggers
timelapse_maker.pywith the appropriate parameter - Script collects JPGs, stitches via ffmpeg (libx264, 1920x1080, 30fps) into MP4
- Results saved to
/media/seagata16t/all_timelapses/ - On each
todayrun, 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