MPR - Media Processor

Media transcoding platform with dual execution modes: local (Celery + MinIO) and cloud (AWS Step Functions + Lambda + S3).

System Overview

Local Architecture (Development)

Local Architecture Open full size

AWS Architecture (Production)

AWS Architecture Open full size

Components

Data Model

Entity Relationships

Data Model Open full size

Entities

Job Flow

Job Lifecycle

Job Flow Open full size

Job States

Media Storage

MPR separates media into input and output paths, each independently configurable. File paths are stored relative to their respective root to ensure portability between local development and cloud deployments (AWS S3, etc.).

Input / Output Separation

Why Relative Paths?

Local Development

MEDIA_IN=/app/media/in
MEDIA_OUT=/app/media/out

/app/media/
├── in/                    # Source files
│   ├── video1.mp4
│   └── subfolder/video3.mp4
└── out/                   # Transcoded output
    └── video1_h264.mp4

AWS/Cloud Deployment

MEDIA_IN=s3://source-bucket/media/
MEDIA_OUT=s3://output-bucket/transcoded/
MEDIA_BASE_URL=https://source-bucket.s3.amazonaws.com/media/

Database paths remain unchanged (already relative). Just upload files to S3 and update environment variables.

API Endpoints

Supported File Types:

Video: mp4, mkv, avi, mov, webm, flv, wmv, m4v
Audio: mp3, wav, flac, aac, ogg, m4a

Quick Reference

Access Points

# Add to /etc/hosts
127.0.0.1 mpr.local.ar

# URLs
http://mpr.local.ar/admin  - Django Admin
http://mpr.local.ar/api    - FastAPI (docs at /api/docs)
http://mpr.local.ar/ui     - Timeline UI