A desktop GUI for building MP4 video slideshows from your photos and videos, with music, transitions, captions, and more. No subscription, no watermark — runs entirely on your machine.
Windows users: grab a pre-built installer from the Releases page — no Python or ffmpeg install required.
Media
- Mix photos (JPG, PNG, GIF, BMP, WEBP, TIFF, HEIC/HEIF) and videos (MP4, MOV, AVI, MKV, etc.)
- Drag-and-drop reorder, or Cut (Ctrl+X) / Paste (Ctrl+V)
- Per-item captions
- Optional title card image at the start
- Blurred-background fill for portrait photos on a landscape canvas
Music
- Multiple audio tracks (MP3, WAV, AAC, M4A, OGG, FLAC, WMA)
- Crossfade between songs and end fade-out
- Music ducking under video clips
- Auto-fit photo duration to music length, or snap to BPM
Transitions
- Crossfade, Fade to Black, Cut, Zoom In, Zoom Out, Wipe Left, Wipe Right
- Adjustable transition duration
Output
- Resolutions: 1080p, 720p, 4K, Vertical/Reels (1080×1920), Square (1080×1080)
- Auto-detect hardware encoding (NVIDIA, Intel, AMD) with software fallback
- Quality presets: Fast, Balanced, High Quality
- Save and reload projects (
.ssproj)
Download SlideshowMaker-<version>-windows.zip from the latest release, unzip, and run SlideshowMaker.exe. ffmpeg is bundled — nothing else to install.
Requirements
- Python 3.9 or later (standard library only — no
pip installneeded for the app itself) - ffmpeg available on
PATH- Windows:
winget install ffmpeg - macOS:
brew install ffmpeg - Linux:
sudo apt install ffmpeg
- Windows:
git clone https://github.com/owenaslin/slideshowmaker.git
cd slideshowmaker
python -m slideshowmaker
# or: python slideshow_maker.pyProduces a self-contained folder in dist/SlideshowMaker/ with ffmpeg bundled.
pip install pyinstaller
# Copy ffmpeg.exe and ffprobe.exe into vendor/ffmpeg/
mkdir vendor\ffmpeg
# (download from https://ffmpeg.org/download.html and copy the two .exe files here)
pyinstaller SlideshowMaker.specslideshowmaker/
app.py — main window and UI layout
media.py — media list, drag-reorder, cut/paste
music.py — music playlist and BPM estimator
preview.py — thumbnail previews
rendering.py — ffmpeg encode pipeline
ffmpeg_utils.py — encoder detection and probing
settings.py — timing controls and output picker
project.py — save/load .ssproj project files
constants.py — file types, resolutions, config
theme.py — dark-theme colour tokens
widgets.py — reusable UI components
tests/
test_timing.py — unit tests for clip timing and fit-to-music logic
MIT © Owen Aslin