Hardware and transcoding

What the server needs for a 1080p or 4K library, how it uses your GPU, which chips handle which codecs, and how much network you need at home and away.

On this page

Most “what hardware do I need” answers start with the wrong question. The honest one is: how often will this server actually re-encode anything? A server that never re-encodes is doing little more than reading files off a disk and putting them on the network, and a very modest machine does that for several people at once. A server that re-encodes 4K HDR for every viewer is doing real work and wants real hardware.

So this page starts with what decides that, then gives numbers.

The three ways a file reaches you

Every time you press play, the server picks the cheapest option that will actually work on your device. You never choose this, and it is chosen per stream, so two people watching at once can be on different rungs.

Direct play. The file is sent as-is. Your device does all the decoding. The server does almost nothing: no decode, no encode, just reading and sending. Cost is close to zero no matter whether the file is 1080p or 4K.

Direct stream (remux). The video is copied through untouched but the container or the audio is rebuilt around it, because your device could play the picture but not the wrapper or the soundtrack. There is still no video re-encode, so this is cheap. A little CPU, no GPU needed.

Transcode. The video is decoded and re-encoded, because the device cannot play the codec, or the resolution has to come down, or HDR has to be tone-mapped, or subtitles must be burned in. This is the expensive one and it is the only one your hardware choice really changes.

The practical consequence: if your library and your devices match well, you can run a big 4K library on a small machine. Modern Apple TV, recent Android TV boxes, and current browsers direct-play a lot. Transcoding is what happens at the edges: an old device, a weak connection, a subtitle format that has to be painted onto the picture.

What actually costs the most

Not the part people expect. On a 4K transcode the decode of the source is usually more expensive than the encode. We measured two 4K HEVC streams on a machine with a current Nvidia card pinning the CPU at 99% while the GPU’s video encoder sat at 3%: all the work was software decoding, none of it was encoding.

That is why the server offloads decoding to the GPU as well as encoding, and why a machine with any capable GPU beats a machine with a fast CPU and no GPU for this job. On the same 4K source, moving decode onto the GPU cut CPU use by about 80% for a full-resolution stream and about 50% for one that also had to be scaled down.

Our stance on hardware encode and decode

We test your hardware instead of trusting its spec sheet. On startup the server runs real encodes and real decodes against your actual chip and driver, half a second each, and records what genuinely worked. It does not read the list of codecs ffmpeg advertises, because a GPU routinely lists codecs its driver stack cannot actually run, and it does not use ffmpeg’s automatic hardware detection, because that silently falls back to software and would report success while doing the work on the CPU.

Three things follow from that, and they are deliberate:

  • The results are per machine, not per model number. Two identical GPUs with different drivers can come out differently, and the one in front of you is the one that counts. You can see exactly what was detected in Settings → Advanced, per codec, for both encode and decode.
  • It fails safe. Anything the probe cannot prove is treated as unsupported. The worst case is that the server does something on the CPU that your GPU could have done, which is slower. It never means a broken stream.
  • A chip has to prove itself twice. A backend has to pass a plain H.264 encode before we consider it working at all, and then it is tested separately for each codec. Support for one codec is never assumed from support for another.

We never encode HEVC in software. If HEVC comes out of this server, it came from your GPU’s video encoder. That is a licensing decision as much as a performance one, and it has a practical consequence worth knowing: keeping HDR as HDR through a transcode needs a GPU that can encode 10-bit HEVC. On a machine without one, an HDR file that has to be transcoded comes out as tone-mapped SDR instead, which looks fine and is not an error.

Output is H.264 or HEVC. AV1 and VP9 play and decode, but the server does not encode to them yet. It will when consumer GPU support is boring rather than exciting.

Which chip does what

Backends the server will look for, by platform:

PlatformLooks for, in order
WindowsNvidia NVENC, Intel Quick Sync, AMD AMF, then software
LinuxNvidia NVENC, Intel Quick Sync, VAAPI (Intel or AMD), then software
macOSApple VideoToolbox, then software

The software fallback encodes H.264 only, and it is always available, so there is no such thing as a machine this will not run on. It is just slower.

The table below is a guide to what a generation can usually do. Treat it as a shopping guide, not a promise, because the answer for your machine is whatever the probe found in Settings → Advanced. Encode support is what matters for transcoding; decode support is what makes transcoding cheap.

VendorH.264HEVC 8-bitHEVC 10-bit (keeps HDR)AV1 decode
NvidiaKepler (GTX 600) and laterMaxwell 2nd gen (GTX 960) and laterPascal (GTX 10) and laterAmpere (RTX 30) and later
IntelSandy Bridge (2nd gen) and laterSkylake (6th gen) and laterKaby Lake (7th gen) and laterXe / Arc / 12th gen and later
AMDGCN and laterPolaris (RX 400) and laterVega / RDNA and laterRDNA 2 (RX 6000) and later
AppleAny Mac with Quick Sync or Apple siliconSkylake Macs, T2 Macs, all Apple siliconApple silicon, T2 MacsM3 and later

Two notes that catch people out. Intel’s Quick Sync is disabled on many desktop builds when a separate graphics card is installed, or when the motherboard has no display output enabled; you may need to turn the integrated GPU back on in the BIOS. And on Linux, Nvidia and Quick Sync need their driver packages present, or the probe correctly reports nothing and the server falls back to software.

These assume a normal household: a few devices, one or two things playing at once. They are deliberately conservative, because the failure mode of an underpowered server is stuttering playback, which is miserable.

A mostly 1080p library

MinimumComfortable
CPUAny 4-core from the last decadeModern 4-core or better
RAM4 GB8 GB
GPUNone needed if most things direct-playAny Quick Sync, Nvidia, AMD, or Apple silicon GPU
DiskYour library, plus about 10 GBSame, on an SSD for the database
Concurrent transcodes1 to 2 on CPU alone5 or more with any modern GPU

A 1080p library is forgiving. Software H.264 encoding at 1080p is within reach of an ordinary CPU for one or two streams, so a small box, an old laptop, or a NAS with a real processor is genuinely fine.

A 4K or HDR library

MinimumComfortable
CPUModern 6-coreModern 8-core
RAM8 GB16 GB
GPUStrongly recommended: any GPU with HEVC decodeA GPU with 10-bit HEVC encode, so HDR survives a transcode
DiskYour library, plus about 20 GBSame, on an SSD for the database
Concurrent transcodes1 on CPU alone, and it will struggle3 to 5 with a modern GPU

Be honest with yourself about the GPU line. 4K software transcoding is not really viable: a single 4K HDR stream can saturate a strong desktop CPU, and the decode side alone will do it. If your 4K library will only ever be watched on devices that direct-play it, a modest machine is fine. If it will be watched away from home, on older TVs, or with burned-in subtitles, get a GPU.

Per platform

The requirements above are the same on all three platforms; these are the platform-specific parts.

WindowsmacOSLinux
VersionWindows 10 or later, 64-bitmacOS 13 Ventura or laterAny current 64-bit distribution
Architecturex86-64Apple silicon or Intelx86-64 or ARM64
Installs asPer-user, no administrator promptOne installer for both chips, menu bar appdeb, rpm, or tarball, as a systemd service
Hardware videoNvidia, Intel Quick Sync, or AMDVideoToolbox, built in and always presentNvidia or Quick Sync with drivers, or VAAPI
Worth knowingNothing extra to install; ffmpeg is bundledAny Apple silicon Mac is a strong server for its size and power drawDriver packages are the usual reason a GPU is not detected

A note on Apple silicon, because it surprises people: even a base M-series Mac mini is a genuinely capable server here. VideoToolbox handles HEVC in both directions including 10-bit, it draws very little power for a machine that is on all the time, and it needs no driver setup at all.

Network

Two different questions, and people usually only think about the first.

At home

What matters is the bitrate of the file, not its resolution, and the two are only loosely related. A heavily compressed 4K stream can be lighter than a Blu-ray rip of a 1080p film.

What is playingTypical per stream
Transcoded to 720pAbout 4 Mbps
Transcoded to 1080pAbout 8 Mbps
Transcoded to 4KAbout 16 Mbps
Direct play, streaming-style 1080p5 to 15 Mbps
Direct play, 1080p Blu-ray rip20 to 40 Mbps
Direct play, 4K HDR Blu-ray rip50 to 100 Mbps

So:

  • Wire the server if you can. It is the single most effective thing you can do, and it matters more than the router.
  • 1080p over Wi-Fi is comfortable on any decent modern Wi-Fi, wired or not.
  • 4K direct play really wants a wire, or Wi-Fi 6 with a good signal. A 100 Mbps 4K remux does not fit reliably down a weak Wi-Fi link, and this is the most common cause of 4K stuttering that gets blamed on the server.
  • Gigabit Ethernet comfortably carries several 4K streams at once. It is rarely the bottleneck.

Away from home

Here the limit is almost always your home internet’s upload speed, which for most connections is far smaller than the download speed you pay attention to. One remote viewer at 8 Mbps needs 8 Mbps of upload that is not being used for anything else.

Upload speedRealistically supports
5 MbpsOne 720p stream
10 MbpsOne 1080p stream
25 MbpsTwo or three 1080p streams
50 Mbps or moreSeveral streams, or one 4K direct play

Because of this, remote viewing usually transcodes down even when the device could play the original, and the server applies its own remote quality ceiling by default so a viewer away from home does not accidentally try to pull a 100 Mbps remux through a 10 Mbps upload. You can adjust that in Settings.

Two more things about remote:

  • Direct connections are attempted first, and the relay is the fallback when your network will not allow one. Direct is faster and does not count against anything.
  • Watching on your own network never counts as remote, however you got there.

Where to check your own machine

Everything above is a guide. Your server already knows the real answer:

  • Settings → Advanced shows the detected hardware backends and the full per-codec encode and decode matrix for this exact machine.
  • The Activity section of the server settings shows what is playing right now, which rung each stream is on, and what each one is costing in CPU, memory, disk, and GPU.

If something is transcoding that you expected to direct-play, Activity will tell you which of the reasons above caused it.

Something here wrong or missing? Tell us at support@kammcs.com and we will fix it.