Transcoding and hardware¶
The variables behind capacity, the graphics card, quality limits and the transcoding cache. Most installations set none of them: the server measures the machine and picks the hardware itself, as explained in Transcoding and server capacity. Where a setting exists in Admin → Transcoding, the value saved there wins.
Hardware acceleration¶
Exposing the GPU to the container: Hardware acceleration.
| Variable | Default | What it does | Panel |
|---|---|---|---|
EVEY_TRANSCODING_HW_MODE |
empty | auto, off, nvenc, vaapi, qsv or rkmpp. Empty: derived from the two variables below. |
Transcoding → Hardware acceleration, live (re-measures) |
EVEY_TRANSCODING_HW_ACCEL_ENABLED |
false |
The older on/off switch. | Transcoding → Hardware acceleration, live |
EVEY_TRANSCODING_HW_BACKEND |
empty (detect) | Pins one backend (nvenc, vaapi, qsv): only that one is measured. Lets several Evey containers on one host each use a different GPU path. |
none |
EVEY_TRANSCODING_HW_DEVICE |
empty (all) | Pins one device: a render node (/dev/dri/renderD129) or a CUDA index (1). With EVEY_TRANSCODING_HW_BACKEND, binds a container to one GPU on a multi-GPU host. |
none |
EVEY_TRANSCODING_HW_FIRST_SEGMENT_TIMEOUT |
10s |
A hardware session that has not produced its first segment in this delay is treated as a stuck GPU and moved to the processor. | none |
EVEY_TRANSCODING_HW_TONEMAP |
on | 0 disables HDR tone mapping on the GPU and uses the processor for it, for a driver known to misbehave. |
none |
EVEY_TRANSCODING_HW_PER_VARIANT |
false |
One ffmpeg per quality on the GPU path instead of one process for all: isolates failures, and avoids the multi-output graph that crashes fragile VA drivers. | Transcoding → Advanced limits → One hardware encoder process per rung, restart |
The low-power Intel encoder and AV1 output (switch and ceiling) have no variable: they are set in Admin → Transcoding only.
Capacity and limits¶
| Variable | Default | What it does | Panel |
|---|---|---|---|
EVEY_TRANSCODING_MAX_SESSIONS |
0 (number of CPUs) |
Total concurrent transcoding sessions. On a machine that can barely sustain one 4K HDR software transcode, set 1 or 2. |
Transcoding → Advanced limits → Max concurrent HLS sessions, restart |
EVEY_TRANSCODING_MAX_CONCURRENT |
2 |
Transcode jobs outside live playback. | Transcode Cache → Max Concurrent, live |
EVEY_TRANSCODING_SINGLE_VARIANT |
true |
Encodes only the quality a viewer is watching. false shares one decode between all qualities but encodes those nobody watches; only for a host with no hardware decoding and heavy sources. |
Transcoding → Advanced limits → Encode one ladder rung at a time, restart |
EVEY_TRANSCODING_SOFTWARE_MAX_HEIGHT |
0 (measured) |
Forces the processor's resolution ceiling instead of the measured one. | Transcoding → Advanced limits → Software transcode height ceiling, restart |
EVEY_TRANSCODING_SOFTWARE_HDR_MAX_HEIGHT |
0 (measured) |
Same, for HDR sources tone-mapped on the processor. | Transcoding → Advanced limits → Software HDR height ceiling, restart |
EVEY_TRANSCODING_SOFTWARE_THREADS |
no cap | Threads per software encoder (1 to 64; anything else means no cap). Hardware encoders ignore it. | none |
EVEY_TRANSCODING_MAX_VIDEO_BITRATE_KBPS |
0 (follows the source) |
A ceiling on the bitrate of transcoded video. | Transcoding → Video bitrate ceiling, live |
EVEY_TRANSCODING_MAX_VIDEO_BITRATE_REMOTE_KBPS |
0 (none) |
The same ceiling for clients outside the home network. | Transcoding → Video bitrate ceiling, remote viewers, live |
Cache¶
| Variable | Default | What it does | Panel |
|---|---|---|---|
EVEY_TRANSCODING_CACHE_MAX_GB |
10 |
The size of the whole transcoding cache (segments, remuxes, prepared downloads), least recently used removed first. | Transcoding → Transcode cache budget, restart |
EVEY_TRANSCODE_CACHE_MIN_FREE_MB |
2048 |
Free space kept on the disk of the cache. Below it, idle segments are evicted, then new segments are refused rather than written; extracted subtitles stop being stored and administrators are notified. 0 turns the margin off. See The transcoding cache. |
none |
EVEY_TRANSCODING_CACHE_DIR |
/cache/transcode |
Where it lives. Set by the image. | none |
EVEY_TRICKPLAY_CACHE_DIR |
/data/trickplay |
Where the seek bar thumbnails live. Set by the image: they are expensive to regenerate, so they stay in /data. |
none |
Calibration clip¶
The measurement encodes a 4K clip. In order of preference: your file, a clip downloaded once and checked by its hash, or a synthetic clip. A real clip measures more honestly than the synthetic one. None of these has a panel equivalent.
| Variable | Default | What it does | Panel |
|---|---|---|---|
EVEY_BENCH_HDR_SAMPLE, EVEY_BENCH_SDR_SAMPLE |
empty | A clip of yours, HDR and SDR. | none |
EVEY_BENCH_HDR_SAMPLE_URL, EVEY_BENCH_SDR_SAMPLE_URL |
empty | A clip to download once, over https. |
none |
EVEY_BENCH_HDR_SAMPLE_SHA256, EVEY_BENCH_SDR_SAMPLE_SHA256 |
empty | The SHA256 of that download; required with a URL. | none |