Skip to content

reelmesh/Py-Timelapse-Maker

Repository files navigation

Timelapse Maker

Timelapse Maker icon

Timelapse Maker is a Python GTK 4/libadwaita desktop app for turning full-resolution photo sequences into timelapse video files with FFmpeg.

It is built for artists, photographers, animators, and anyone who wants to keep the creative freedom of the original photographs. Instead of immediately shrinking a sequence to a standard video size, you can render from high-resolution stills, choose the timelapse speed, and preserve room for later crops, pans, zooms, and reframing in an editor.

Version: 0.5.0
Flatpak ID: io.github.reelmesh.PyTimelapseMaker

Status

The repo has two generations of code:

  • Current app: timelapse_maker/, the GTK 4/libadwaita v0.5.0 port.
  • Legacy reference: main_gui.py, timelapse_engine.py, monitoring_engine.py, and dark_theme.qss, kept temporarily while the port reaches full parity.

Use the current package for new work.

Features

  • Scan a folder and its direct child folders for numeric image sequences.
  • Detect common image suffixes: JPG, JPEG, PNG, TIFF, and WebP.
  • Split gaps into separate sequences.
  • Select or deselect sequences before rendering.
  • Use the full resolution of the source photographs when desired.
  • Keep extra image detail for later crop, zoom, pan, and reframing work.
  • Render through FFmpeg with H.264, H.265, VP9, ProRes, and DNxHR presets.
  • Control input FPS, output FPS, CRF quality, scale, and output base name.
  • Scale to original, 6K, 4K, 1080p, 720p, or custom dimensions.
  • Show render progress, log output, and cancellation.
  • Show basic CPU, memory, and NVIDIA GPU monitoring when platform tools are available.
  • Save JSON presets under the user config directory.
  • Import old repo-local JSON presets from timelapse_presets/ when found.
  • Build a proxy preview video for smoother scrubbing and playback.
  • Package as a Flatpak bundle.

Why Full Resolution Matters

The original reason for this app is creative control.

Many timelapse tools push you straight into common video sizes such as 1080p or 4K. That is convenient, but it also throws away the extra resolution captured by modern cameras. If the final video is already baked at a standard size, later crops and zooms quickly lose detail.

Timelapse Maker starts from the numbered photographs themselves. You can keep the original resolution, export an editing-friendly intermediate, or scale only when you actually want to. That gives you room to:

  • crop into a specific area of the frame after rendering
  • add slow zooms or pans in a video editor
  • reframe a shot without going back to the image sequence
  • create multiple versions from the same render
  • decide the timelapse speed by changing how many source frames become each second of video

The practical limit is still your machine, FFmpeg, codec choice, and final delivery format. The point is that those limits become choices you make, not defaults imposed too early.

Expected Image Naming

Timelapse Maker looks for a text prefix, a numeric counter, and an image suffix.

Examples:

P0001.JPG
P0002.JPG
P0003.JPG

shot_0100.png
shot_0101.png
shot_0102.png

Gaps split a directory into multiple sequences. For example, P0001.JPG, P0002.JPG, and P0005.JPG become two sequences.

Install The Flatpak Bundle

The v0.5.0 release artifact is included in this repo:

flatpak install --user TimelapseMaker-0.5.0.flatpak
flatpak run io.github.reelmesh.PyTimelapseMaker

The app targets GNOME Platform 50. Flatpak may ask to install or update that runtime.

Run From Source

Install system dependencies from your distro:

  • Python 3.11 or newer
  • GTK 4
  • libadwaita
  • PyGObject
  • FFmpeg
  • psutil, optional, for CPU and memory monitoring
  • nvidia-smi, optional, for NVIDIA GPU monitoring

Then run:

python -m timelapse_maker.app

On Fedora-like systems the dependencies are usually packages such as python3-gobject, gtk4, libadwaita, ffmpeg, and python3-psutil. Package names vary by distro.

Basic Workflow

  1. Choose an input folder that contains image sequences, or direct child folders containing sequences.
  2. Choose an output folder.
  3. Click Scan.
  4. Leave the sequences you want checked.
  5. Pick codec, FPS, quality, scaling, and optional output base name.
  6. Optionally click Build Preview to generate a proxy video for smoother preview playback.
  7. Click Render Selected.
  8. Watch progress and logs. Use Cancel to stop the current FFmpeg process.

H.264 MP4 is the default safe output path. For maximum editing flexibility, render at original size or use ProRes/DNxHR as an intermediate, then crop, zoom, or export delivery versions in your video editor. Hardware encoders are intentionally not assumed, because FFmpeg builds and GPU access differ across systems.

Presets

New presets are JSON files saved under:

~/.config/timelapse-maker/presets/

Old presets in a repo-local timelapse_presets/ folder are imported if they exist. The JSON format remains intentionally simple so settings can be inspected or copied by hand.

Development

python -m compileall timelapse_maker
pytest

Useful docs:

  • docs/USER_GUIDE.md: app usage and render settings.
  • docs/ARCHITECTURE.md: module layout and data flow.
  • docs/PACKAGING.md: Flatpak build and release process.
  • docs/TROUBLESHOOTING.md: common install, scan, and render problems.
  • docs/IMPLEMENTATION_PLAN.md: v0.5.0 migration plan.
  • docs/LLM_SUMMARY.md: compact project handoff for another LLM.

Build A Flatpak

flatpak-builder --disable-rofiles-fuse --force-clean build-dir io.github.reelmesh.PyTimelapseMaker.yml
flatpak build-export /tmp/timelapse-maker-repo build-dir
flatpak build-bundle /tmp/timelapse-maker-repo TimelapseMaker-0.5.0.flatpak io.github.reelmesh.PyTimelapseMaker

See docs/PACKAGING.md for a fuller checklist.

Project Layout

timelapse_maker/             Current GTK/libadwaita app package
tests/                       Engine and runner tests
data/                        Desktop, AppStream, GSettings, and icon metadata
docs/                        User, developer, packaging, and release docs
packaging/timelapse-maker    Installed launcher script
icon.png                     Original project icon used by the README

License

MIT. See LICENSE.

About

Render full-resolution photo sequences into timelapse videos, preserving room for crop, zoom, pan, reframing, and speed control.

Topics

Resources

License

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages