Skip to content

KoushikEng/librifygen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

8 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Librifygen

High-performance thumbnail & preview generator for videos and images.

Librifygen is a cross-platform media processing toolkit that generates:

  • Image thumbnails
  • Video thumbnails (single-frame extraction)
  • Video preview clips (random segments stitched together)
  • Full CLI tool + clean Python API
  • Designed for automation, content pipelines, and library indexing tools.

Uses ffmpeg for video operations and Pillow for image processing.


πŸš€ Features

  • Extract thumbnails from videos at midpoint or a provided timestamp
  • Resize images intelligently (crop or letterbox)
  • Batch-scan directories recursively
  • Create multi-clip video previews
  • CLI + Python module
  • Works on Linux, Windows, macOS
  • Safe and predictable processing (temp dirs, logging, error handling)

πŸ“¦ Installation

Requires:

Python 3.8+
Pillow
ffmpeg-python
ffmpeg (system binary)

Install Librifygen:

pip install librifygen

πŸ”§ Installing ffmpeg (Required)

Librifygen depends on the ffmpeg binary being present in your system PATH. Here are the easiest installation methods per OS:


🟦 Windows

Option A β€” Use Chocolatey (recommended)

choco install ffmpeg

Option B β€” Use Scoop

scoop install ffmpeg

Option C β€” Manual Download

  1. Download from: https://www.gyan.dev/ffmpeg/builds/
  2. Extract the folder
  3. Add the bin/ directory to your PATH environment variable

Verify:

ffmpeg -version

🍎 macOS

Using Homebrew (recommended)

brew install ffmpeg

Using MacPorts

sudo port install ffmpeg

Verify:

ffmpeg -version

🐧 Linux

Debian / Ubuntu

sudo apt update
sudo apt install ffmpeg

Fedora

sudo dnf install ffmpeg

Arch Linux

sudo pacman -S ffmpeg

Verify:

ffmpeg -version

πŸ–₯️ CLI Usage

After installation, the librifygen command becomes available:

librifygen <command> [options]

Available commands:

  • thumbs β€” generate thumbnails for images/videos in a directory
  • preview β€” generate multi-clip preview videos

▢️ Generate Thumbnails

Basic usage

librifygen thumbs /path/to/media /path/to/output

With workers & custom size

librifygen thumbs ~/Pictures ~/Thumbs --workers 8

🎬 Generate Preview Videos

librifygen preview ./videos ./previews

Custom clips, duration, audio, transitions

librifygen preview ./videos ./previews \
    --num-clips 4 \
    --clip-duration 3 \
    --workers 4

A preview is generated like:

input.mp4 β†’ previews/input_preview.mp4

🐍 Python API Usage

Use Librifygen directly in your Python code:


βœ” Generate image thumbnail

from librifygen.thumbnail import generate_image_thumbnail

output = generate_image_thumbnail(
    "media/photo.png",
    "thumbnails/photo.jpg"
)

print(output)

βœ” Generate video thumbnail

from librifygen.thumbnail import generate_video_thumbnail

thumb = generate_video_thumbnail(
    "media/video.mp4",
    "thumbnails/video.jpg"
)
print("Thumbnail:", thumb)

βœ” Generate preview video

from librifygen.preview import generate_video_preview

preview = generate_video_preview(
    "media/video.mp4",
    "previews",
    num_clips=4,
    clip_duration=5,
)
print(preview)

βœ” Batch processing

from librifygen.thumbnail import generate_thumbnails

results = generate_thumbnails(
    input_dir="media",
    output_dir="thumbs",
    max_workers=6
)

for src, out in results:
    print(src, "->", out)

πŸ“‚ Example Project Structure

You can integrate Librifygen into your own project like:

project/
β”‚
β”œβ”€β”€ media/
β”‚   β”œβ”€β”€ images/
β”‚   β”œβ”€β”€ videos/
β”‚
β”œβ”€β”€ thumbs/
β”‚
β”œβ”€β”€ previews/
β”‚
└── generate_media_assets.py

Example script:

from librifygen.thumbnail import generate_thumbnails
from librifygen.preview import batch_create_previews

generate_thumbnails("media", "thumbs", max_workers=8)
batch_create_previews("media/videos", "previews", num_clips=4)

βš™οΈ Supported Formats

Images

jpg, jpeg, png, bmp, tiff, webp

Videos

mp4, mov, mkv, webm, avi, flv, m4v

Formats are customizable using:

from librifygen.config import set_extensions
set_extensions(video_exts=[".mp4", ".mov"], image_exts=[".jpg"])

🧩 Roadmap

  • GPU-accelerated previews (via CUDA / Vulkan / Metal)
  • Progress bars & verbose CLI
  • Config file support
  • Parallel image-resizing via ProcessPool optimization
  • WebAssembly build (ffmpeg-wasm) for browser-based pipelines

πŸ“ License

MIT License Β© Me


🀝 Contributing

Pull requests welcome. Please open issues for bugs, feature requests, or ffmpeg compatibility questions.


πŸ§ͺ Testing your installation

pip install librifygen
librifygen --help