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
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, anddark_theme.qss, kept temporarily while the port reaches full parity.
Use the current package for new work.
- 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.
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.
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.
The v0.5.0 release artifact is included in this repo:
flatpak install --user TimelapseMaker-0.5.0.flatpak
flatpak run io.github.reelmesh.PyTimelapseMakerThe app targets GNOME Platform 50. Flatpak may ask to install or update that runtime.
Install system dependencies from your distro:
- Python 3.11 or newer
- GTK 4
- libadwaita
- PyGObject
- FFmpeg
psutil, optional, for CPU and memory monitoringnvidia-smi, optional, for NVIDIA GPU monitoring
Then run:
python -m timelapse_maker.appOn Fedora-like systems the dependencies are usually packages such as python3-gobject, gtk4, libadwaita, ffmpeg, and python3-psutil. Package names vary by distro.
- Choose an input folder that contains image sequences, or direct child folders containing sequences.
- Choose an output folder.
- Click
Scan. - Leave the sequences you want checked.
- Pick codec, FPS, quality, scaling, and optional output base name.
- Optionally click
Build Previewto generate a proxy video for smoother preview playback. - Click
Render Selected. - Watch progress and logs. Use
Cancelto 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.
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.
python -m compileall timelapse_maker
pytestUseful 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.
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.PyTimelapseMakerSee docs/PACKAGING.md for a fuller checklist.
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
MIT. See LICENSE.