← Back to projects

Contentor Video Processor

A self-hosted video compression platform with an Airflow-orchestrated FFmpeg pipeline and workload-isolated processing queues.

  • Django
  • Python
  • Apache Airflow
  • Celery
  • FFmpeg
  • MinIO
  • PostgreSQL
  • Redis
  • Stripe
  • Prometheus
  • Grafana
  • Docker

Overview

A self-hosted platform for compressing videos. The web app and API live at process.contentor.app, but the interesting part is the backend that turns "compress this video" into a reliable, observable pipeline.

- **Apache Airflow** orchestrates each job as a DAG: download from object storage → transcode → upload → extract metadata → clean up, with each step writing a status the UI reads back as live progress, and a failure callback that marks the job failed.
- **Workload-isolated Celery queues**: separate DAGs per plan tier and video size (freemium/premium × S/M/L/XL) route work to dedicated worker pools — fast status updates, I/O transfers, and CPU-heavy FFmpeg encoding each get their own queue and concurrency, so a huge premium job can't starve a quick free one.
- **Adaptive FFmpeg encoding**: each input is probed with ffprobe, then a CRF is chosen from its bitrate and codec so re-encoding actually shrinks the file instead of bloating it.
- **Storage** on MinIO (S3-compatible), with **PostgreSQL + Redis** behind it and a full **Prometheus + Grafana + Loki** observability stack. Stripe-backed plans and quotas.

Updates

No updates added yet.