// the find
shimberger/gohls
A server that exposes a directory for video streaming via web interface
gohls is a Go server that wraps ffmpeg to transcode local video files on-the-fly and serve them as HLS streams through a React/Video.js web UI. Point it at a directory, hit the browser, done. Good fit for a home media server or a quick internal video sharing tool where you control the network.
Ships pre-built binaries for all major platforms including Apple Silicon, so the ffmpeg dependency aside, setup is genuinely fast. The Go backend handles HLS segmentation and transcoding via ffmpeg subprocess, which is the right call — no point reimplementing that. Caption and frame extraction handlers are included, which most similar tools skip. The frontend is a separate npm build embedded into the binary, so deployment is a single file.
The author's own README calls it 'pretty crappy all around' — that's not false modesty. Last commit was March 2023, the React UI is on an old CRA setup with tslint (deprecated since 2019), and the Node version is pinned via .nvmrc to whatever was current then. There's zero authentication — anyone who can reach the port can browse and stream your files, which means you'd need to put it behind a reverse proxy with auth before exposing it anywhere. No rate limiting or concurrent stream management, so transcoding will happily saturate your CPU if multiple clients connect. The cache layer is a simple in-memory map with no eviction policy visible from the directory structure.