Skip to main content

Professional video slideshow creation with Apple-style transitions and AI-generated music

Project description

๐ŸŽ Memories Creator

Professional video slideshow creation with Apple-style transitions and AI-generated music, optimized for Apple Silicon.

Transform your photo collections into stunning cinematic videos with AI-powered music generation, professional transitions, and automatic photo enhancementโ€”all from the command line or Python API.

Python Version License PyPI Platform


๐ŸŒŸ Features

The only open-source slideshow tool with built-in AI music generation.

๐ŸŽฌ Professional Video Creation

  • 9 Transition Types: Ken Burns, zoom in/out, pan, fade in/out, cross-fade, dissolve, static
  • Smart Photo Enhancement: Automatic enhancement for photos taken before 2020
  • Hardware Acceleration: Native MPS support for Apple Silicon (M1/M2/M3/M4)
  • Multiple Codecs: H.264, H.265 (HEVC) with VideoToolbox hardware encoding

๐ŸŽต AI Music Generation

  • Text-to-Music: Generate custom soundtracks from natural language descriptions
  • Multiple Models: Small (fast), Medium (balanced), Large (best quality), Melody (melody-aware)
  • Seamless Looping: Intelligent audio extension for any video length
  • Professional Mixing: Automatic volume balancing, fade in/out, crossfades

โšก Performance

  • GPU Acceleration: PyTorch MPS backend for transitions and effects
  • Multi-threaded: Parallel image processing
  • Memory Efficient: Handles 100+ photos with 16GB RAM

๐Ÿ“ฆ Installation

From PyPI (Recommended)

pip install memories-creator

From Source

git clone https://github.com/kubataba/memories-creator.git
cd memories-creator
pip install -r requirements.txt
pip install -e .

Additional Requirements

FFmpeg (required):

# macOS
brew install ffmpeg

# Ubuntu/Debian
sudo apt install ffmpeg

๐Ÿ“ ะ˜ั‚ะพะณะพะฒะฐั ัั‚ั€ัƒะบั‚ัƒั€ะฐ ะฟั€ะพะตะบั‚ะฐ ะดะปั PyPI

memories-creator/
โ”œโ”€โ”€ memories_creator/        
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ cli.py
โ”‚   โ”œโ”€โ”€ main.py
โ”‚   โ”œโ”€โ”€ config.py
โ”‚   โ”œโ”€โ”€ music_generator.py
โ”‚   โ”œโ”€โ”€ video_processor.py
โ”‚   โ”œโ”€โ”€ transitions.py
โ”‚   โ”œโ”€โ”€ slide_editor.py
โ”‚   โ””โ”€โ”€ media_utils.py
โ”‚
โ”œโ”€โ”€ README.md                    
โ”œโ”€โ”€ LICENSE                       
โ”œโ”€โ”€ setup.py                     
โ”œโ”€โ”€ pyproject.toml 
โ”œโ”€โ”€ config.json             
โ”œโ”€โ”€ requirements.txt               
โ”œโ”€โ”€ MANIFEST.in                   
โ””โ”€โ”€ .gitignore

๐Ÿš€ Quick Start

1. Create Your First Video.

# Create configuration
memories config create

# Add your photos to ./photos directory
mkdir photos
cp ~/Pictures/*.jpg photos/

# Generate video
memories create

Output: output/memories_video.mp4

2. With AI Music.

Edit config.json:

{
  "art_dir": "./photos",
  "output_dir": "./output",
  "generate_music": true,
  "music_prompt": "uplifting piano melody, emotional strings, cinematic",
  "music_model": "small"
}
memories create

3. Command Line Options

# Custom paths
memories create --input ./vacation --output ./videos

# Custom music
memories create --music ./my-song.mp3

# Different transition
memories create --transition ken_burns

# Generate music only
memories music "epic orchestral" --duration 120

# List slides
memories list

# Fix rotations
memories fix 8:180 12:90

# Replace audio
memories audio --file new-music.mp3

๐Ÿ“– Python API

Basic Usage

from memories_creator import MemoriesCreator, Config

# Load configuration
config = Config.from_file('config.json')

# Create video
creator = MemoriesCreator(config)
creator.create_video()

Generate Music

from memories_creator import MusicGenerator

# Create generator
generator = MusicGenerator(model_name='small')

# Generate soundtrack
music_path = generator.generate(
    prompt="peaceful piano with gentle strings",
    duration=120,
    output_path="output.wav"
)

Batch Processing

from memories_creator import MemoriesCreator, Config

projects = ['vacation', 'wedding', 'family']

for project in projects:
    config = Config()
    config.set('art_dir', f'./{project}')
    config.set('output_dir', f'./output/{project}')
    
    creator = MemoriesCreator(config)
    creator.create_video()

๐ŸŽ›๏ธ Configuration

Example config.json

{
  "art_dir": "./photos",
  "output_dir": "./output",
  
  "music_prompt": "nostalgic piano, gentle strings",
  "generate_music": true,
  "music_model": "small",
  "music_seamless": true,
  "music_volume": 0.3,
  
  "max_video_size": 1920,
  "fps": 30,
  "seconds_per_photo": 3,
  
  "transition_type": "ken_burns",
  "transition_intensity": 0.1,
  
  "enhance_old_photos": true,
  "year_threshold": 2020,
  
  "video_codec": "hevc_videotoolbox",
  "video_quality": 23
}

Transition Types

  • ken_burns - Slow zoom + pan (classic)
  • zoom_in - Smooth zoom in
  • zoom_out - Smooth zoom out
  • pan - Horizontal/vertical movement
  • fade_in - Fade from black
  • fade_out - Fade to black
  • fade_cross - Crossfade between images
  • dissolve - Smooth blend
  • static - No movement (fast)

Music Models

  • small - Fast, ~1.5GB (recommended)
  • medium - Balanced, ~3.3GB
  • large - Best quality, ~6.7GB
  • melody - Melody conditioning

๐Ÿ’ป System Requirements

Minimum:

  • Python 3.9+
  • 8GB RAM
  • macOS 12.3+ or Linux (Ubuntu 20.04+)
  • FFmpeg

Recommended:

  • Python 3.10+
  • 16GB+ RAM
  • Apple Silicon (M1/M2/M3/M4) Mac
  • macOS 13+
  • 20GB disk space (for AI models)

๐Ÿ› Troubleshooting

MPS not available

python -c "import torch; print(torch.backends.mps.is_available())"

Update macOS to 12.3+ and PyTorch:
pip install --upgrade torch

Out of memory

Reduce max_video_size to 1280 and use transition_type: "static"

Music generation fails

Check disk space (models are 1.5-6GB): df -h

FFmpeg not found

# macOS: brew install ffmpeg
# Linux: sudo apt install ffmpeg

๐Ÿ“„ License

CC-BY-NC-4.0 (Creative Commons Attribution-NonCommercial 4.0 International)

This project is licensed for non-commercial use only.

You are free to:

  • โœ… Use for personal videos and memories
  • โœ… Modify and adapt the code
  • โœ… Share with attribution

You must:

  • ๐Ÿ“ Give appropriate credit
  • ๐Ÿ”— Provide a link to the license
  • โš ๏ธ Not use for commercial purposes

Attribution:

Memories Creator by Eduard Emkuzhev
License: CC-BY-NC-4.0
https://github.com/kubataba/memories-creator

Full license: https://creativecommons.org/licenses/by-nc/4.0/


๐Ÿ™ Acknowledgments

  • PyTorch - Deep learning framework
  • MusicGen - AI music generation (Meta AI)
  • FFmpeg - Audio/video processing
  • OpenCV - Video encoding

๐Ÿ“ž Support


๐Ÿค Contributing

Contributions welcome! This project is licensed under CC-BY-NC-4.0.

git clone https://github.com/kubataba/memories-creator.git
cd memories-creator
pip install -r requirements.txt
pip install -e .

Made with โค๏ธ to keep your memories alive

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

memories_creator-1.0.0.tar.gz (47.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

memories_creator-1.0.0-py3-none-any.whl (48.3 kB view details)

Uploaded Python 3

File details

Details for the file memories_creator-1.0.0.tar.gz.

File metadata

  • Download URL: memories_creator-1.0.0.tar.gz
  • Upload date:
  • Size: 47.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for memories_creator-1.0.0.tar.gz
Algorithm Hash digest
SHA256 5ba3d2a8301b3c1f8ce086e22d9f11780dbb5df0aae6f843987a4a84bda1c672
MD5 e5284adc499c64c3155c10cf6d33bac5
BLAKE2b-256 c81832ce19257822cb6a94f176a04be173a441ee315e82aafda8b78c82bb6273

See more details on using hashes here.

File details

Details for the file memories_creator-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for memories_creator-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d0c028ddb9283fc4d1f0c40e2a4fcd7f38b9db803de007b804daad6bd7e88a45
MD5 f24ae1205fafbc2cbd84cfd2ad173dce
BLAKE2b-256 2ecfed8a5ea71d7533dbc1537b559178454b688401335fbf7dea24935c52c7e3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page