Releases: reedylab/transcodarr
Releases · reedylab/transcodarr
Release list
v1.3.0 — Hardware transcoding
Hardware-accelerated transcoding.
Added
- Hardware transcoding — full GPU pipeline (decode → scale → HDR tone-map → encode) for Intel Quick Sync (QSV), VA-API (Intel/AMD), and NVIDIA NVENC. Frames stay on the GPU end-to-end; ~4× faster and ~13× less CPU than software on an Intel iGPU. Opt-in via GPU compose overlays (
docker-compose.gpu.yml,docker-compose.gpu-nvidia.yml) — the base image stays GPU-less. - Per-node capability detection — probes each backend with a real test encode (not just
ffmpeg -encoders), reporting the encode/decode codecs and tone-mappers it can actually use. Exposed atGET /api/system/capabilities. - Settings → Hardware — detected backends, read-only passthrough config, and how to enable.
- Per-preset encode backend — hardware vs. software is an encoding-preset setting routed by the Auto rules; hardware presets are seeded per detected backend (e.g.
4K Downscale (QSV)/4K Downscale (VA-API)). - GPU HDR→SDR tone-mapping (VA-API / OpenCL), chosen per file, with a software fallback.
- Automatic software fallback — any backend, codec, or source that isn't hardware-capable (e.g. AV1 on a GPU without AV1 decode) drops to software per-job instead of failing; the encode backend is labeled in the logs.
HW_MAX_WORKERS— global cap on concurrent hardware encodes for GPU session limits.- README Hardware Transcoding section with screenshots.
Fixed
- Re-transcode loop for files whose metadata sidecar was missing — the source is now identified via a Radarr/Sonarr path lookup and cleaned up, and the transcode-history circuit breaker records again (a swallowed
NameErrorhad silently disabled it). build_ffmpeg_cmdtests read the live settings database — they passed in CI but failed on a configured host, so they were guarding nothing there.
v1.2.0
First release published as a prebuilt Docker image 🎉
docker pull ghcr.io/reedylab/transcodarr:1.2.0 # or :1.2, :1, :latestAdded
- Real-time UI via Server-Sent Events — status, media, logs, and system streams replace polling; keyed row diffing updates table rows in place instead of rebuilding the whole table
- Server-side pagination with infinite scroll, status filtering, total counts, and bulk-by-filter actions (transcode / ignore / set-output by filter, plus select-all-matching)
- Postgres-backed media cache with one-shot JSON→DB migration; cache survives container rebuilds
- Re-encode-only mode with optional watch paths, for batch re-encoding existing libraries
- Re-transcode circuit breaker to stop repeated failed re-transcodes
- Auto-start watchdog on container boot when
AUTO_WORKERS > 0 - Official prebuilt Docker image published to GHCR via GitHub Actions CI (#3, #5)
- Mobile-responsive UI (header wrap, 2-column tile grid, full-screen modal) and a floating scroll-to-top button
- Auto-detect Radarr/Sonarr path remapping; configurable extra-file-extensions
- Static assets auto cache-busted by file mtime
Changed
- BREAKING: renamed
X264_THREADS→ENCODER_THREADS; the thread setting now applies to all codecs, not just x264 - BREAKING: replaced hardcoded media folder names with four configurable volume mounts (
MOVIES_WATCH_PATH,TV_WATCH_PATH,MOVIES_OUTPUT_PATH,TV_OUTPUT_PATH); compose refuses to start if any is unset - Consolidated the settings UI from 10 sections to 4
- ffmpeg command builder now honors codec and HDR settings
- SSE media stream narrowed to in-flight items only, shrinking the first-connect payload
- README overhaul: restructured Quick Start, refreshed screenshots, updated API table
Fixed
- Tile-view progress percentage showing 100× too large
- Hardened
meta.jsonhandling against malformed/partial files - Bulk enrich now walks the output folders instead of the (possibly empty) DB cache
- Radarr/Sonarr path-lookup fallback and corrected path-remap direction for metadata enrichment
Thanks to @maxnatamo for the Docker publishing workflow (#5) that made these images possible.