Skip to content

aliyilmazco/mosavid

mosavid

A photomosaic video generator that creates artistic mosaic videos from images. Transform any photo into a stunning mosaic built from thousands of tiny component images, and watch the process as an animated video.

Features

  • 5 Output Modes: Satisfying/ASMR video, Timelapse video, Comparison video, Static image, Video-to-video mosaic
  • 7 Animation Types: drop-in, fade-in, slide-in, pop, scale-up, rotate-in, none
  • 6 Placement Algorithms: row-by-row, column-by-column, random, spiral, center-out, diagonal
  • 8 Video Presets: Short, Standard, Satisfying, Timelapse, Instagram Reel, TikTok, 4K Showcase, Quick Demo
  • Aspect Ratio Support: 16:9, 9:16, 1:1 with edge-extend, blur, or color fill
  • Progress Indicators: 6 themes (modern, neon, ocean, minimal, fire, glass)
  • Audio Support: Background music and sound effects
  • Text Overlays: Titles, subtitles, captions with custom fonts

Quick Start

pip install mosavid

# Create a satisfying mosaic video
mosavid satisfying -i examples/1.jpg -o output.mp4

# Quick test (5-10 second low-res video)
mosavid quick-test -i examples/1.jpg

Installation

From PyPI

pip install mosavid

From Source

git clone https://github.com/aliyilmazco/mosavid.git
cd mosavid
pip install -e .

Development Setup

git clone https://github.com/aliyilmazco/mosavid.git
cd mosavid
pip install -e ".[dev]"

Usage

Satisfying/ASMR Video

Tiles are placed one-by-one with smooth animations:

mosavid satisfying \
  --input examples/1.jpg \
  --output mosaic.mp4 \
  --animation drop_in \
  --order spiral \
  --tiles-per-second 5 \
  --stride 10

Satisfying Video

Timelapse Video

Fast-forwarded mosaic construction in a target duration:

mosavid timelapse \
  --input examples/1.jpg \
  --output timelapse.mp4 \
  --duration 30 \
  --order row_by_row \
  --adaptive  # slow start, accelerating speed

Timelapse Video

Comparison Video

Before/after comparison with transitions:

mosavid comparison \
  --input examples/1.jpg \
  --output comparison.mp4 \
  --style wipe \
  --hold-time 3 \
  --transition-time 2

Styles: wipe, fade, slide, slider, side_by_side

Comparison Video

Preset-Based Generation

Use pre-optimized configurations for specific platforms:

mosavid preset \
  --input examples/1.jpg \
  --preset short

Preset Video

Static Mosaic Image

Generate a mosaic image without video:

mosavid image \
  --input examples/1.jpg \
  --output mosaic.png \
  --stride 10

Mosaic Image

Video-to-Video Mosaic

Convert each frame of a video into a mosaic:

mosavid video \
  --input video.mp4 \
  --output mosaic_video.mp4 \
  --stride 10 \
  --overlay-ratio 0.2  # show original in corner

Video to Video

Quick Test

mosavid quick-test -i examples/1.jpg

Quick Test

List Available Options

mosavid list-options

Global Options

Option Short Description
--verbose -v Verbose output (debug logging)
--quiet -q Minimal output (errors only)
--version Show version
--help Show help

Common Options

Option Short Description Default
--input -i Input image path Required
--output -o Output path data/<type>.mp4
--pool -p Component images directory face
--stride -s Tile size in pixels (1-500) 10
--resolution -r Video resolution auto / 1080p
--fps Frames per second (1-120) 30
--aspect-ratio -ar Force aspect ratio None
--music -m Background music file None
--title Video title overlay None
--progress/--no-progress Show progress bar Disabled

Component Images

The project includes a pool of 1,500+ face images in the face/ directory. You can use your own tile pool:

mosavid satisfying -i examples/1.jpg --pool /path/to/your/images

Your component images directory should contain .jpg or .png files. For best results:

  • Use at least 100+ images for variety
  • All images will be resized to stride x stride pixels
  • More diverse colors in your pool = better mosaic quality

Configuration

Resolutions

Name Dimensions
360p 640x360
480p 854x480
720p 1280x720
1080p 1920x1080
1440p 2560x1440
4k 3840x2160
short_720p 720x1280
short_1080p 1080x1920
square_720p 720x720
square_1080p 1080x1080

Animation Types

Type Description
none Instant placement
drop_in Tile drops from above
fade_in Gradually appears
slide_in Slides from the side
pop Pops into place with overshoot
scale_up Grows from small to full size
rotate_in Rotates while appearing

Placement Orders

Order Description
row_by_row Left to right, top to bottom
column_by_column Top to bottom, left to right
random Random placement
spiral Clockwise spiral from edges to center
center_out From center expanding outward
diagonal Diagonal sweep

Architecture

mosavid/
├── core/                 # Mosaic engine
│   ├── component_loader  # Image pool loading & caching
│   ├── tile_matcher      # Color-based tile matching
│   ├── mosaic_engine     # Tile placement algorithms
│   └── aspect_ratio_handler
├── generators/           # Video generators
│   ├── base_generator    # Abstract base class
│   ├── satisfying_generator  # ASMR-style videos
│   ├── timelapse_generator   # Speed-up videos
│   └── comparison_generator  # Before/after videos
├── effects/              # Visual effects
│   ├── animations        # Tile animations & easing
│   ├── progress_indicator    # Progress bar themes
│   ├── text_overlay      # Text rendering
│   └── transitions       # Video transitions
├── audio/                # Audio management
│   ├── audio_manager     # Background music
│   └── sound_effects     # Tile placement sounds
└── config/               # Configuration
    ├── settings          # Defaults & constants
    └── presets           # Platform presets

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

CLI tool that transforms photos into animated mosaic videos with 7 animation styles, 6 placement algorithms, and social media presets.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Sponsor this project

Packages

 
 
 

Contributors