Loren Lisk

From One Script to a Distributed Pipeline

Video Ingestion System

A Kubernetes-native, distributed AV1 transcoding pipeline that runs on the homelab cluster. Upload a video, and it gets probed, optionally tuned, encoded to AV1, named, quality-scored and published to object storage with a download link. It is a personal project in a private repository, so this page describes it in general terms.

Origin

It started as a single-host bash script, first written in April 2025, that ran on vulcan, the dedicated AV1 encoder described on the homelab page. That script is no longer the running system, but it still earns its keep as the equivalence baseline: the new system's pinned encoder parameters have to match it. In May 2026 the script grew into a Kubernetes-native distributed transcoding pipeline.

Architecture

Eight Go binaries, split into long-running services and one-shot workers:

The job state machine

Every job walks the same path. CRF search is the one optional state; when it is turned off, probing goes straight to encoding.

RECEIVED -> QUEUED -> PROBING -> [CRF_SEARCHING] -> ENCODING
         -> NAMING -> VMAF_SCORING -> FINALIZING -> COMPLETED

  any active state -> FAILED     (retries exhausted)
  any active state -> CANCELLED  (cancelled by the user)

VMAF scoring is informational. If it cannot produce a score, the job moves on to finalizing without one; a missing score never fails a job.

Toolchain

Engineering practices

"If I had more time, I would have made this shorter."

Top Of Page