Transcoding
tvarr can transcode streams in real-time using FFmpeg.
When to Transcode
Transcoding is useful when:
- Your device doesn't support the source codec (e.g., HEVC on older devices)
- You want to reduce bandwidth for mobile viewers
- You need a different container format (HLS, DASH)
- The source quality is too high for your connection
How It Works
Source Stream → FFmpeg → Transcoded Stream → Player
│ │
HEVC/AAC H264/AAC @ 720p
tvarr uses FFmpeg for transcoding, with support for:
- Hardware acceleration - VAAPI, NVENC, QSV, AMF
- Distributed workers - Scale across multiple machines
- On-demand transcoding - Only transcode when someone's watching
Setup Options
Built-in Transcoding
The standalone image (ghcr.io/jmylchreest/tvarr:release) includes FFmpeg and can transcode locally.
Distributed Transcoding
For larger setups, run separate transcoding workers:
- Main tvarr as coordinator
- One or more ffmpegd workers
- Workers connect via gRPC and share the load
📄️ Encoding Profiles
Configure video and audio encoding settings
📄️ ffmpegd Workers
Distributed transcoding daemons
📄️ Hardware Acceleration
GPU-accelerated encoding with VAAPI, NVENC, QSV, and AMF