# movmaker Simple Python + ffmpeg movie maker. Drop pictures, videos, music, and optionally one simple `data.txt` file into a single flat input directory. Then run one command to create an MP4 video. No YAML. No required subdirectories. ## Requirements - Python 3 - `ffmpeg` - `ffprobe` usually included with ffmpeg Install on Debian/Ubuntu/Raspberry Pi OS: ```bash sudo apt install ffmpeg ``` ## Fonts The default title/stamp styling uses these fonts: - Bebas Neue for the opening title, date, and location - Inter for the bottom-left and bottom-right stamps Both fonts support common Danish and Croatian characters such as `æ ø å Æ Ø Å č ć ž š đ Č Ć Ž Š Đ`. Install them locally for the current user: ```bash mkdir -p ~/.local/share/fonts/google curl -L -o ~/.local/share/fonts/google/BebasNeue-Regular.ttf \ 'https://github.com/google/fonts/raw/main/ofl/bebasneue/BebasNeue-Regular.ttf' curl -L -o ~/.local/share/fonts/google/Inter%5Bopsz,wght%5D.ttf \ 'https://github.com/google/fonts/raw/main/ofl/inter/Inter%5Bopsz,wght%5D.ttf' fc-cache -f ~/.local/share/fonts/google ``` Check that fonts are available: ```bash fc-match 'Bebas Neue' fc-match 'Inter' ``` ## Input folder Example: ```text input/ IMG_001.jpg IMG_002.png holiday_clip.mp4 music.mp3 data.txt ``` Supported file types: - Images: `.jpg`, `.jpeg`, `.png`, `.webp`, `.bmp`, `.tif`, `.tiff` - Videos: `.mp4`, `.mov`, `.mkv`, `.avi`, `.webm`, `.m4v` - Audio: `.mp3`, `.wav`, `.m4a`, `.aac`, `.flac`, `.ogg` - Data: `data.txt`, `info.txt`, or `title.txt` Files are ordered by filename, so names like this work well: ```text 001.jpg 002.jpg 003.mp4 004.jpg ``` ## data.txt `data.txt` is optional. Simplest format: ```text Paris Trip May 2024 Paris, France ``` Those three lines mean: 1. title 2. date 3. place Key/value format also works: ```text title: Paris Trip date: May 2024 place: Paris, France ``` Optional per-file captions may be supported, but they are not required: ```text IMG_001.jpg: Eiffel Tower IMG_002.jpg: Louvre ``` ## Usage Basic: ```bash python3 movmaker.py input ``` With options: ```bash python3 movmaker.py input \ --out-dir out \ --image-duration 6 \ --fade 3 \ --audio-fade 10 \ --first-transition-at 12 \ --resolution 1920x1080 \ --fps 30 ``` ## Current behavior - scans one flat input directory - auto-detects media/audio/data files by extension - shows each image fully visible for 6 seconds by default, not counting crossfades - keeps the first image longer so the first transition starts at 12 seconds by default - includes video clips inline - crossfades between media items over 3 seconds by default - loops/trims music to match the video - fades music in at the beginning and out at the end over 10 seconds by default - overlays the opening title for the first 6 seconds: large bold title, then smaller non-bold date/location on one line - adds persistent bottom-left title/date/place and bottom-right `marijo@novosel.dk` stamps - writes an MP4 file named like `YYYYMMDD_title.mp4` by default - takes `YYYYMMDD` from the first picture/video metadata, falling back to file modification date - uses local `ffmpeg/ffmpeg` and `ffmpeg/ffprobe` when present, otherwise system tools ## Notes This is an early version. The intended workflow is deliberately simple: dump files into one folder and run the script.