The NoMercy media server ships with a modern encoder that handles the entire pipeline from "here's a source file" to "here's an adaptive streaming ladder your phone can play." This report walks through what it supports, how it protects you from misconfiguration, and what makes it different from a raw ffmpeg wrapper.
| Area | Coverage |
|---|---|
| Video codecs | H.264 (6 encoders), H.265 / HEVC (6), AV1 (7), VP9 (3) |
| Audio codecs | AAC, Opus, FLAC, AC3, EAC3, MP3, Vorbis, TrueHD, DTS |
| Subtitle codecs | WebVTT, ASS, SRT + OCR for PGS / DVD / DVB bitmap subs |
| Containers | HLS, DASH, MP4, MKV, MP3, FLAC, OGG (single-file audio) |
| Encoder strategies | 10 (single-pass + two-pass variants per container) |
| Built-in presets | 10 (Chromecast, Apple TV 4K HDR, Mobile, 4K Archival, Anime, plus 5 general-purpose) |
| Hardware encoders | NVIDIA NVENC, AMD AMF, Intel QSV + VAAPI, Apple VideoToolbox |
| HDR support | HDR10 passthrough, Dolby Vision, HDR10+, HDR→SDR tonemap via libplacebo / OpenCL / zscale |
| Distribution | Multi-machine encoding over HTTP with HMAC auth |
| Live transcode | On-the-fly HLS for clients that can't play the source |
| Disc ripping | Bluray + DVD scanner and stream-copy ripper |
| Validator | 30+ pre-encode checks that catch user mistakes before an encode starts |
- Home server owners who want Netflix-quality adaptive streaming from their own library without having to learn ffmpeg
- Small-studio editors who need deterministic encodes from a preset library (Apple TV 4K HDR, Chromecast-compatible, etc.)
- Prosumers with multiple machines who want to distribute encoding across a desktop + workstation + NAS
This is a multi-page tour. Pages are linked to from the file list on the left (in the Gist UI); each page focuses on one subsystem.
- Overview — you are here
- Architecture — pipeline stages, strategies, DI model
- Codecs and formats — every supported codec, every encoder family, container matrix
- Profiles and presets — profile structure, built-in preset library, preset inheritance
- Safety net — the 30+ validator checks + API endpoints for pre-encode guidance
- Hardware and HDR — per-GPU benchmarking, HDR passthrough, Dolby Vision handling
- Content analysis — crop detection, intro/outro fingerprinting, subtitle OCR, speech transcription
- Subtitles and DRM — text vs bitmap routing, burn-in, AES-128 HLS encryption
- Live transcode — on-the-fly playback for clients that can't handle the source
- Disc ripping — Bluray / DVD import
- Distributed encoding — multi-machine coordination, signed HTTP transport, health tracking, source file streaming, live progress
These show up repeatedly across the subsystems:
Fail at profile save, not at encode time. If your settings will produce a broken encode, you hear about it the moment you hit save — not thirty minutes into a 4K job. The validator catches 30+ classes of common misconfiguration with human-readable fix guidance.
Accept any input, produce a curated set of outputs. The encoder reads anything ffmpeg can parse — exotic containers, weird codecs, malformed headers, VFR streams. Output is restricted to a deliberate subset of well-supported formats so you never ship an encode that won't play on your target devices.
Hardware is opt-in, not magic. When you have a GPU, the encoder detects it, benchmarks it against your CPU, and picks the faster path. When you don't, software encoding runs with the same quality profile — you just wait longer. No surprise hardware fallback silently producing worse output.
Every decision is observable. Crop detector ran? You see that in the plan log. ABR ladder auto-generated? The generated rungs are in the progress stream. Remote worker retried? The dashboard shows the worker health history.
No destructive defaults. Source files are never modified. Outputs go into a separate directory tree. Failed encodes clean up after themselves. Resume-after-crash works because of explicit checkpoint files, not implicit "hope nothing moved."