Media transcoding platform with dual execution modes: local (Celery + MinIO) and cloud (AWS Step Functions + Lambda + S3).
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.).
MEDIA_IN - Source media files to process
MEDIA_OUT - Transcoded/trimmed output files
Why Relative Paths?
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
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.
All client interactions go through GraphQL at
/graphql.
scanMediaFolder - Scan S3 bucket for media
files
createJob - Create transcode/trim jobcancelJob / retryJob - Job lifecycle management
updateAsset / deleteAsset - Asset management
Supported File Types:
Video: mp4, mkv, avi, mov, webm, flv, wmv, m4v
Audio: mp3, wav, flac, aac, ogg, m4a
# Add to /etc/hosts
127.0.0.1 mpr.local.ar
# URLs
http://mpr.local.ar/admin - Django Admin
http://mpr.local.ar/graphql - GraphiQL IDE
http://mpr.local.ar/ - Timeline UI