Initial movmaker script

This commit is contained in:
hbrain 2026-05-24 12:42:20 +00:00
commit 5b37d43665
3 changed files with 443 additions and 0 deletions

115
README.md Normal file
View file

@ -0,0 +1,115 @@
# 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
```
## 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 --output movie.mp4
```
With options:
```bash
python3 movmaker.py input \
--output output/movie.mp4 \
--image-duration 3 \
--fade 1 \
--resolution 1920x1080 \
--fps 30
```
## Current behavior
- scans one flat input directory
- auto-detects media/audio/data files by extension
- shows each image for 3 seconds by default
- includes video clips inline
- crossfades between media items
- loops/trims music to match the video
- overlays title/date/place at the beginning
- writes an MP4 file
## Notes
This is an early version. The intended workflow is deliberately simple: dump files into one folder and run the script.