Skip to content

Repository files navigation

Jadiv-Timelapse

If you found this useful, please give this repo a star! Also check out my other repos!

You can take a look at my issue and pr queue if you are wondering why is something stale for days here

A simple tool for creating a timelapse video from a sequence of photos (e.g. from a camera on a tripod). Pick a folder of photos, set the frame rate and target resolution, and the tool assembles them into the resulting video.

You can view a demo video here.

image

The project contains three independent variants with the same functionality — pick whichever suits you:

File Description Requires Status
jadiv-timelapse_plus.py More advanced desktop GUI with a dark theme (PyQt5) — recommended version Python 3, OpenCV, PyQt5 Maintained
docs/index.html Web version — runs directly in the browser, no installation needed Modern browser (Chrome/Edge/Firefox) Maintained
jadiv-timelapse.py Simple desktop GUI (Tkinter) Python 3, OpenCV ⚠️ Unmaintained (legacy)

jadiv-timelapse.py (Tkinter version) is unmaintained. It stays in the repository for people who already use it, but it is no longer developed and new bugs in it are not fixed. For new installs, use jadiv-timelapse_plus.py or the web version.

Features

  • Create a timelapse video from .jpg / .jpeg / .png photos (including large JPGs from cameras)
  • Adjustable frame rate (FPS)
  • Optional target resolution (4K, Full HD, HD, SD, low quality, or original resolution) with aspect ratio preserved
  • Shows processing progress and lets you cancel processing at any time
  • Processing runs in the background (the GUI/page never freezes)
  • On startup, the app (desktop _plus version and web version) checks GitHub for a newer release and shows a notification if one is available; the current version is shown in the corner of the window/page
  • A short "Made by Jadiv-Timelapse" watermark with a link to this repo is appended to the last 4 seconds of the generated video; run jadiv-timelapse_plus.py with --nomark to skip it

Requirements and installation (desktop versions)

You need Python 3.8+, a system ffmpeg install, and the following libraries:

pip install -r requirements.txt

Getting error: externally-managed-environment? Recent Debian/Ubuntu/Fedora ship a system Python that blocks pip install outside a virtual environment (PEP 668). Install into a venv instead of system-wide:

python3 -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -r requirements.txt
python3 jadiv-timelapse_plus.py   # run inside the same activated venv

jadiv-timelapse_plus.py shells out to ffmpeg for H.264 video encoding (OpenCV's own pip build can only encode MPEG-4, which mobile apps and Instagram reject), so ffmpeg must be on your PATH:

# Debian / Ubuntu
sudo apt install ffmpeg
# Fedora
sudo dnf install ffmpeg
# macOS
brew install ffmpeg
# Windows
winget install ffmpeg

jadiv-timelapse.py additionally uses tkinter, which ships with the standard Python installation on Windows and macOS. On Linux you can install it via your package manager, e.g.:

# Debian / Ubuntu
sudo apt install python3-tk

Usage

Desktop Plus version (PyQt5) — recommended

python3 jadiv-timelapse_plus.py

Web version

Runs directly at jan-tdy.github.io/jadiv-timelapse (GitHub Pages) — nothing to install, just open the link in a browser.

It can also be run locally without an internet connection — download docs/index.html and open it in a browser (double-click, or via File > Open). In both cases the photos are processed locally in the browser and are never uploaded anywhere. The output is a .webm video.

Desktop version (Tkinter, unmaintained)

python3 jadiv-timelapse.py

In both desktop versions, simply:

  1. Select the folder with the photos.
  2. Choose where and under what name the resulting video should be saved (.mp4).
  3. Set the FPS and target resolution.
  4. Click VYTVORIŤ TIMELAPSE (or press Enter).

Processing can be interrupted at any time with the Zrušiť (Cancel) button.

Notes

  • Photos are sorted by file name using natural (numeric) sorting — so frame2.jpg sorts before frame10.jpg, even without leading zeros in the number. It's still worth using a consistent naming format (e.g. IMG_0001.jpg, IMG_0002.jpg, ...).
  • Corrupted or unreadable photos are skipped during processing and are not included in the video.
  • MP4/WebM codecs require an even width and height for the video — the tool handles this automatically.

Testing

The natural-sort and resolution/aspect-ratio math shared by all three variants lives in a single testable place per variant: timelapse_core.py (used by both .py GUIs) and docs/resolution.js (used by the web version).

# Python (both desktop variants)
pip install -r requirements-dev.txt
pytest

# Web version
node docs/test/resolution.test.js

Releases

The project publishes versions via GitHub Releases — the release tag is also the version shown to users (e.g. in JapySoft Code Master, which downloads the app based on the latest release, not the latest commit on the branch).

License

This project is available under the license found in the LICENSE file.

About

A simple tool for creating a timelapse video from a sequence of photos (e.g. from a camera on a tripod or from a camcorder). You select a folder with photos, set the frame rate and target resolution, and the tool will assemble the resulting video from them.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages