A single 1080p60 H.264 transcode at the veryfast preset consumes about 1.6–2.4 cores of an x86 CPU. Ten concurrent viewers on a mix of 1080p and 720p ladders will saturate a 16-core box before the network link shows any strain. That ratio decides the hardware: transcoding clusters are CPU-dense, RAM-light and network-heavy in a way that game servers are not, and sizing them with game-server instincts produces a box that stalls at the first stream burst.
The Core-per-Stream Baseline
| Source | Output ladder | x264 veryfast cores | x264 medium cores | NVENC sessions |
|---|---|---|---|---|
| 1080p30 | source only | 1.4 | 2.9 | 1 (shared) |
| 1080p60 | source + 720p | 2.6 | 4.8 | 2 |
| 1080p60 | source + 720p + 480p | 3.2 | 6.1 | 3 |
| 4K30 | 4K + 1080p + 720p | 8.5 | 16.0 | 4 |
| 1440p60 | 1080p + 720p | 5.1 | 9.4 | 3 |
Hardware encoding cuts CPU cost by 80–90%, but per-session quality at the same bitrate is roughly one preset step behind software. For a single-source stream to a private community, NVENC on a consumer GPU handles 8–12 sessions. For a public platform with bitrate-constrained delivery, software encoding at veryfast gives better quality per megabit.
CPU Selection for Transcoding Nodes
Thread count matters more than clock here, which is the opposite of game-server sizing. An EPYC 9354P with 32 cores at 3.25 GHz base delivers 2.4x the transcode throughput of a Ryzen 9 7950X with 16 cores at 4.5 GHz, despite a lower per-core clock — x264 scales across physical cores almost linearly until memory bandwidth saturates.
- 4–8 concurrent streams: Ryzen 7 7700 or Core i7-14700 (8 P-cores).
- 12–24 streams: EPYC 4344P or Ryzen 9 7950X, 64 GB RAM.
- 30–60 streams: dual EPYC 9354P or single EPYC 9654, 128–256 GB RAM.
- 60+ streams: two nodes behind a load balancer rather than one large box, for failure isolation.
Watch for E-core scheduling problems on hybrid Intel parts. A transcode thread migrated to an E-core mid-frame drops encoder throughput by 40% and produces a visible quality dip. Pin ffmpeg workers to P-cores with taskset, or choose an all-P-core Xeon or EPYC platform.
Memory: Less Than You Think, Until It Isn’t
Each ffmpeg process holds roughly 90–180 MB of buffers for 1080p and 350–600 MB for 4K. Twenty 1080p streams need only 4 GB. The memory pressure comes from the segment cache if the node also serves HLS output: a 6-second segment cache across 20 streams at 6 Mbps is around 90 MB per ladder rung, which is trivial. Budget 1 GB per stream as a safe ceiling and add 8 GB for the operating system and monitoring.
Network: The Bill You Did Not Model
Bitrate determines egress. A 1080p stream at 6 Mbps delivered to 100 viewers costs 600 Mbps of sustained outbound bandwidth. That is 216 TB per month if the stream runs 8 hours a day — which on metered transit at €0.02 per GB is €4,300 monthly, far more than the server.
| Stream bitrate | Concurrent viewers | Egress | Monthly at 8h/day |
|---|---|---|---|
| 720p 3 Mbps | 50 | 150 Mbps | 16 TB |
| 1080p 6 Mbps | 50 | 300 Mbps | 32 TB |
| 1080p 6 Mbps | 200 | 1.2 Gbps | 130 TB |
| 4K 18 Mbps | 100 | 1.8 Gbps | 194 TB |
This is why transcoding nodes should feed a CDN rather than serve viewers directly. Push one 6 Mbps mezzanine stream to the CDN edge and let the CDN absorb viewer fan-out. Unmetered 1 Gbps ports on dedicated servers make the origin cost predictable; the CDN handles the last mile.
Storage and I/O for Live Encoding
Live transcoding is memory-resident and barely touches disk. VOD transcoding is the opposite: a 90-minute 1080p source at 8 Mbps is 5.4 GB, and a full ladder produces 6–7x the source size in outputs before packaging. For VOD work, budget 8 TB of NVMe per node and write outputs directly to object storage rather than local disk.
NVMe matters for the read side. Reading 12 simultaneous sources at 8 Mbps is only 96 Mbps, well within any drive, but segmented reads across fragmented files can push queue depth high enough that consumer drives add 2–4 seconds to job start times. Enterprise NVMe keeps segment read latency under 200 µs.
Cost per Stream and the Break-Even
A 32-core EPYC node at €260 per month transcoding 24 concurrent 1080p streams costs €10.80 per stream. A single-GPU NVENC box at €140 per month handling 10 sessions costs €14 per session but uses a fifth of the power. For a small private community the GPU box wins; above 30 concurrent sessions the CPU node’s per-stream cost drops to €6–€8 and the economics flip.
Before buying, benchmark with the real preset and the real ladder. Run four simultaneous ffmpeg jobs with your production settings and measure encoder speed — a factor above 1.0 means the node keeps up in real time, and you want at least 1.5x headroom. Then double the job count and measure again; throughput scaling tells you whether the platform is memory-bandwidth bound. Nodes that pass both tests are directly comparable against dedicated hardware with committed cores and unmetered uplinks.
For operators planning past 60 concurrent sessions, the practical architecture is two medium nodes behind a load balancer with a shared object store for outputs. It costs about 1.2x a single large node, removes the single point of failure during peak events, and makes scale-out a matter of adding a third identical box rather than a forklift upgrade. Specs and monthly terms for those platforms are listed alongside the hosting providers on the main site in a directly comparable format.


Leave a Reply
You must be logged in to post a comment.