Skip to content

Java 21 · Spring Boot

In progress

Distributed Video Transcoding Platform

Four Spring Boot services, GPU-accelerated FFmpeg, and 8x the throughput

Four services implemented; JWT auth and refresh tokens wired

Overview

A Java microservice platform for transcoding video: REST APIs for conversion with configurable codec, bitrate, frame rate and resolution per job, across H.264, H.265, AV1 and VP9, in CPU or GPU mode.

Four services split by responsibility — auth, transcoding, file and notification — with FFmpeg GPU acceleration raising throughput 8x over the CPU path. The distributed shape is the point of the project as much as the transcoding is: a message queue, a cache, object storage, a gateway and a monitoring stack around the services.

Long-running jobs sit behind an event-driven Kafka pipeline with Redis caching job state, which is what keeps API latency independent of media duration. A request is accepted and queued rather than held open for the length of the encode.

Stack

Language
Java 21 (LTS), Spring Boot 3.3
Services
auth · transcoding · file · notification
Transcoding
FFmpeg, GPU-accelerated
Messaging
Kafka for async job dispatch
Cache
Redis for job state
Storage
MinIO, S3-compatible
Database
PostgreSQL
Monitoring
Prometheus and Grafana

Decisions Worth Explaining

  • Async through Kafka, not a held-open request

    Transcoding runtime scales with media duration. Accepting and queueing the job keeps the API contract predictable and lets the worker pool absorb bursts.

  • GPU as a mode, not a fork

    CPU and GPU paths share one API surface, with separate compose files for the hardware variants, so the client does not change when the hardware does.

  • Split by responsibility from the start

    Four services rather than one, because the queue, the gateway and the observability were the subject of the exercise.

What Is Not Done

  • The monitoring stack is composed but not exercised under real load.
  • The 8x figure is measured on one GPU and one source profile, not across a matrix.
  • No CI.