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.).
| Path | Env Var | Purpose |
|------|---------|---------|
| MEDIA_IN | /app/media/in | Source media files to process |
| MEDIA_OUT | /app/media/out | Transcoded/trimmed output files |
These can point to different locations or even different servers/buckets in production.
videos/sample.mp4)MEDIA_IN env varMEDIA_OUT env varMEDIA_BASE_URL env varbash
MEDIA_IN=/app/media/in
MEDIA_OUT=/app/media/out
/app/media/
├── in/ # Source files
│ ├── video1.mp4
│ ├── video2.mp4
│ └── subfolder/
│ └── video3.mp4
└── out/ # Transcoded output
├── video1_h264.mp4
└── video2_trimmed.mp4
```
filename: video1.mp4 file_path: video1.mp4
filename: video3.mp4 file_path: subfolder/video3.mp4 ```
location /media/in { alias /app/media/in; }location /media/out { alias /app/media/out; }http://mpr.local.ar/media/in/video1.mp4<video src="/media/in/video1.mp4" />```bash
MEDIA_IN=s3://source-bucket/media/ MEDIA_OUT=s3://output-bucket/transcoded/ MEDIA_BASE_URL=https://source-bucket.s3.amazonaws.com/media/ ```
``` s3://source-bucket/media/ ├── video1.mp4 └── subfolder/ └── video3.mp4
s3://output-bucket/transcoded/ ├── video1_h264.mp4 └── video2_trimmed.mp4 ```
``` filename: video1.mp4 file_path: video1.mp4
filename: video3.mp4 file_path: subfolder/video3.mp4 ```
http
POST /api/assets/scan
Behavior:
1. Recursively scans MEDIA_IN directory
2. Finds all video/audio files (mp4, mkv, avi, mov, mp3, wav, etc.)
3. Stores paths relative to MEDIA_IN
4. Skips already-registered files (by filename)
5. Returns summary: { found, registered, skipped, files }
```http POST /api/jobs/ Content-Type: application/json
{ "source_asset_id": "uuid", "preset_id": "uuid", "trim_start": 10.0, "trim_end": 30.0 } ```
Behavior:
- Server sets output_path using MEDIA_OUT + generated filename
- Output goes to the output directory, not alongside source files
Upload source files to S3:
bash
aws s3 sync /app/media/in/ s3://source-bucket/media/
aws s3 sync /app/media/out/ s3://output-bucket/transcoded/
Update environment variables:
bash
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)
Video: .mp4, .mkv, .avi, .mov, .webm, .flv, .wmv, .m4v
Audio: .mp3, .wav, .flac, .aac, .ogg, .m4a