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

Execution Modes

Media Storage

MPR separates media into input and output paths for flexible storage configuration.

View Media Storage Documentation →

API (GraphQL)

# GraphiQL IDE
http://mpr.local.ar/graphql

# Queries
query { assets(status: "ready") { id filename duration } }
query { jobs(status: "processing") { id status progress } }
query { presets { id name container videoCodec } }
query { systemStatus { status version } }

# Mutations
mutation { scanMediaFolder { found registered skipped } }
mutation { createJob(input: { sourceAssetId: "...", presetId: "..." }) { id status } }
mutation { cancelJob(id: "...") { id status } }
mutation { retryJob(id: "...") { id status } }
mutation { updateAsset(id: "...", input: { comments: "..." }) { id comments } }
mutation { deleteAsset(id: "...") { ok } }

# Lambda callback (REST)
POST /api/jobs/{id}/callback      - Lambda completion webhook

Access Points

# Local development
127.0.0.1 mpr.local.ar
http://mpr.local.ar/admin         - Django Admin
http://mpr.local.ar/graphql       - GraphiQL
http://mpr.local.ar/              - Timeline UI
http://localhost:9001              - MinIO Console

# AWS deployment
https://mpr.mcrn.ar/              - Production

Quick Reference

# Render SVGs from DOT files
for f in *.dot; do dot -Tsvg "$f" -o "${f%.dot}.svg"; done

# Switch executor mode
MPR_EXECUTOR=local    # Celery + MinIO
MPR_EXECUTOR=lambda   # Step Functions + Lambda + S3