Skip to main content
Jellyfin NVENC Transcodes + a Local LLM on One RTX 3060 12GB

Jellyfin NVENC Transcodes + a Local LLM on One RTX 3060 12GB

NVIDIA rates the RTX 3060 for 12 concurrent NVENC sessions. VRAM, not the encoder, is what actually runs out first.

NVIDIA rates the RTX 3060 at 12 concurrent NVENC sessions, but its 12GB of GDDR6 is the real ceiling. The VRAM budget math for a shared homelab GPU.

Hardware at a Glance

Median generation throughput at 7–9B models (Llama 3.1 8B, Qwen 3 8B), Q4 quantization, from community-reported runs SpecPicks tracks. Street price is the lowest tracked listing within a sane band of MSRP; prices move daily. Rows marked for comparison are not covered by this article — they are the nearest cards by VRAM, included so the throughput column has something to be read against.

GPUVRAM Llama-3-8B class, Q4Price Source
NVIDIA GeForce RTX 3060 12 GB 55.2 tok/s25 runs · 13 sources $329MSRP smeltcore.com
NVIDIA GeForce RTX 5070for comparison 12 GB 59.1 tok/s5 runs · 5 sources $501street knightli.com
Arc B580for comparison 12 GB 40 tok/s19 runs · 12 sources $310street llama.cpp GitHub Discussions

Which models fit on a RTX 3060?

RTX 3060 carries 12 GB of VRAM. At Q4_K_M the weights take roughly 0.55 GB per billion parameters and the runtime plus a usable context window wants about 2 GB on top, so the fit column below is derived from that arithmetic; every tokens-per-second figure is a median over community-reported Q4 runs SpecPicks tracks for this card, with the run count and the source beside it.

Model size Weights at Q4 Fits in 12 GB? Measured Left for context Source
3B (Llama 3.2 3B, Qwen 3 4B)Runs on almost anything with a discrete GPU, and usably on modern integrated graphics. ~2 GB Fitsweights and a usable context window 128.3 tok/s4 runs · 3 sources ~10 GBfor runtime and KV cache tyolab.com
7-9B (Llama 3.1 8B, Qwen 3 8B)The mainstream local model. An 8 GB card fits it; a 12 GB card fits it with real context. ~5 GB Fitsweights and a usable context window 55.2 tok/s25 runs · 13 sources ~7 GBfor runtime and KV cache smeltcore.com
12-14B (Qwen 3 14B, Phi-4)Where 8 GB stops being enough. This is the band the RTX 3060 12GB exists for. ~8 GB Fitsweights and a usable context window 29.4 tok/s17 runs · 9 sources ~4 GBfor runtime and KV cache llmrun.dev
20-27B (Gemma 3 27B, Mistral Small)Fits a 16 GB card at Q4 with a modest context window; 24 GB if you want a long one. ~15 GB Nospills to system RAM — PCIe bandwidth sets the speed none
30-35B (Qwen 3 32B, QwQ 32B)The step change. A 24 GB card holds this entirely in VRAM; below that it is CPU offload. ~19 GB Nospills to system RAM — PCIe bandwidth sets the speed none
70B+ (Llama 3.3 70B, Qwen 2.5 72B)One 48 GB card or two 24 GB cards. A 32 GB card runs it only with layers in system RAM. ~40 GB Nospills to system RAM — PCIe bandwidth sets the speed none

Every RTX 3060 benchmark run, with its source → GPU picks for local LLM — the same table across every card we track How we source these numbers

Yes, comfortably — the encoder is not the bottleneck. NVIDIA rates the desktop RTX 3060 for 12 concurrent NVENC sessions on a single 7th-generation encoder (NVIDIA Video Encode and Decode GPU Support Matrix). The constraint is the card's 12,288 MB of GDDR6 (TechPowerUp). Budget the transcode headroom first, and a 7B-14B model at 4-bit still fits.

The homelab reality

The box already exists. It runs the media library, it has been running it for two years, and it works. Then a local model becomes interesting — an assistant that indexes your notes, a summarizer that never phones home — and the obvious move is to put it on the machine that is already powered on 24/7 with a GPU in it.

This is a different problem from the one most guides address. The well-covered case is gaming plus inference, where two workloads fight over the same CUDA cores and the failure is visible as stutter. Media serving plus inference is quieter and more confusing, because the two workloads mostly do not compete for the same silicon. NVENC is a fixed-function encoder block, physically separate from the shader cores your model runs on (Wikipedia — NVENC). Encoding a stream does not consume the compute your tokens need.

What they do share is memory, and memory is where this configuration succeeds or fails. Every decode and encode session reserves buffers in the same 12 GB pool the model weights live in. Push past the pool and one of two things happens: the inference runtime offloads layers to system RAM and throughput collapses, or the transcode fails to initialise and Jellyfin silently falls back to software encoding, which lands on the CPU and shows up to the viewer as buffering.

There is also one important exception to the "separate silicon" rule, and it is the single most-missed detail in this whole setup. HDR tone-mapping is not free. Jellyfin documents CUDA as the only available tone-mapping method on Windows and Linux (Jellyfin — NVIDIA hardware acceleration). Tone-mapping a 4K HDR stream therefore does run on the shader cores your model is using. A library full of HDR content behaves very differently from a library of SDR H.264.

Key takeaways

  • The session limit is not your problem. NVIDIA rates the desktop RTX 3060 at 12 concurrent NVENC sessions (NVIDIA). Home libraries rarely exceed three.
  • VRAM is the ceiling. 12,288 MB total (TechPowerUp), shared between model weights, KV cache and transcode buffers.
  • HDR tone-mapping costs CUDA, not just VRAM. CUDA is the only tone-mapping path on Windows and Linux (Jellyfin).
  • Ampere cannot encode AV1. The support matrix lists AV1 encode as unavailable on the RTX 3060 (NVIDIA). It decodes AV1; it does not produce it.
  • Reserve VRAM explicitly. Let the inference runtime size itself to free memory and the first transcode of the evening is the thing that breaks.
  • Direct play beats every optimisation here. A stream that never transcodes costs zero VRAM and zero CUDA.

Step 0 — measure before you buy anything

Most people planning this setup are solving a problem they do not have. Before budgeting a single megabyte, find out what your library actually does.

There are three outcomes when a client requests a file:

  • Direct play — the client supports the container, video codec and audio codec. The file is sent as-is. Zero GPU cost.
  • Remux — video and audio streams are copied into a different container without re-encoding. Near-zero GPU cost.
  • Transcode — the video stream is decoded and re-encoded. This is the only case that touches NVENC and VRAM.

Open the Jellyfin dashboard during a normal evening and read the active-streams panel. It labels each session with which of the three is happening. Do that for a week and you will have your real concurrency number, which for most households is one or two transcodes at peak and frequently zero.

The second measurement is your HDR ratio. Count how much of what you actually watch is 4K HDR versus SDR. Given that tone-mapping is the one operation that competes with inference for CUDA cores, a library that is 5% HDR is a fundamentally different engineering problem from one that is 60% HDR.

Take both numbers before reading the tables below, because the tables are budgets and a budget without a real workload is arithmetic theatre.

How much VRAM does a single NVENC transcode session actually take?

NVIDIA does not publish a per-session VRAM figure, and any specific number quoted without a measurement is invented. What is documented is what drives the allocation, and that is enough to budget defensively.

A transcode session allocates, at minimum:

  • Decode surfaces — the NVDEC output pool, sized by resolution and the reference-frame count of the source stream. A 4K HEVC source with many reference frames needs a substantially larger pool than 1080p H.264.
  • Encode surfaces — the NVENC input pool plus its lookahead buffer.
  • Filter-chain surfaces — scaling and, critically, tone-mapping intermediates. Jellyfin's CUDA tone-mapping path supports zero-copy (Jellyfin), which keeps frames on the GPU rather than round-tripping through system memory, but the surfaces still occupy VRAM.

The practical consequence is that per-session cost scales with source resolution, not output resolution. Transcoding 4K down to 1080p is far more expensive than transcoding 1080p to 720p, because the decode pool is sized by the input.

The correct method is measurement, not estimation. Run nvidia-smi with the model loaded and idle to establish a floor, start one representative transcode, and read the delta. Repeat with your worst case — the largest HDR file in the library. That delta, times your real peak concurrency from Step 0, is the number you reserve. Everything else is guesswork dressed up as a spec.

What is the concurrent NVENC session limit on a consumer GeForce card in 2026?

Twelve, on this card, and the folklore here is badly out of date.

For years, consumer GeForce drivers were restricted to a small number of simultaneous NVENC sessions — a limitation that spawned an entire ecosystem of driver patches. NVIDIA's current support matrix lists the desktop GeForce RTX 3060 with 1 NVENC unit, 7th-generation, and a maximum of 12 concurrent sessions (NVIDIA). The same matrix shows the RTX 50-series at 12 as well. The old three-session ceiling is not the constraint people still cite it as.

The same row is worth reading for codec support, because it changes what you should configure:

CapabilityRTX 3060 (desktop, 7th-gen NVENC)
Max concurrent sessions12
H.264 4:2:0Yes
H.264 4:2:2No
H.265 (HEVC) 4K 4:2:0Yes
HEVC 4:2:2No
HEVC 8KYes
HEVC 10-bitYes
HEVC B-frame supportYes
AV1 encodeNo

All rows are from NVIDIA's published matrix (NVIDIA).

Two configuration consequences follow. First, uncheck AV1 in Jellyfin's NVENC settings — Ampere decodes AV1 but cannot encode it, and leaving it enabled invites a silent software fallback. Second, HEVC 10-bit encode is available, which matters because HDR tone-mapping requires HEVC 10-bit decoding to be present in the first place (Jellyfin).

Also confirm your driver. Jellyfin 10.11 requires NVIDIA driver 522.25 or newer (Jellyfin). And NVENC works headless on both Windows and Linux — no monitor or dummy plug is required, which is the usual worry on a rack-mounted box.

The VRAM budget

Start from 12,288 MB (TechPowerUp) and subtract downward. The figures below are a budgeting framework — substitute your own measured transcode delta from the section above.

AllocationNotes
Total VRAM12,288 MB
Less display/desktop overheadZero on a headless server; non-trivial with a desktop session attached
Less transcode reserveYour measured per-session delta times peak concurrency
Less KV cacheGrows with context length and batch size
RemainingThe weights budget

The ordering matters. Reserve transcode capacity first, because a media server that buffers is a user-visible failure while a model that loads a slightly smaller quantisation is not.

Quantisation for the leftover budget

Quantisation trades weight precision for memory. The llama.cpp K-quant formats are the practical options for a 12 GB card (llama.cpp). Approximate weight sizes scale with parameter count times bits-per-weight, so the table below is arithmetic, not measurement — actual files vary by a few hundred megabytes.

Model classQ4_K_M weightsQ5_K_M weightsQ8_0 weightsFits with transcode headroom?
7B~4.0-4.5 GB~4.8-5.3 GB~7.2-7.6 GBYes, comfortably at Q4/Q5
8B~4.6-5.0 GB~5.5-6.0 GB~8.2-8.6 GBYes at Q4/Q5
12B~6.8-7.3 GB~8.2-8.7 GB~12.5 GB+Yes at Q4, tight at Q5
14B~8.2-8.8 GB~9.8-10.4 GB~15 GB+Q4 only, minimal headroom
24B+~13.5 GB+~16 GB+~25 GB+No

Quality loss below Q4 becomes noticeable on reasoning and code tasks, which is why Q4_K_M rather than Q3 is the usual floor. The 7B-to-12B band at Q4_K_M is the sweet spot for this build: it leaves several gigabytes of genuine headroom for transcode surfaces and KV cache.

Prefill vs generation under contention

These two phases of inference behave very differently when a transcode starts, and understanding why explains most of the confusing performance reports.

Prefill — processing your prompt — is compute-bound. It runs large matrix multiplications across the shader cores and saturates them. Generation — producing tokens one at a time — is memory-bandwidth-bound. The RTX 3060's 192-bit GDDR6 interface (TechPowerUp) is the limiting resource, not the cores.

A plain SDR transcode uses NVENC and NVDEC, touching neither shader cores nor much bandwidth. Steady-state token streaming barely notices it. An HDR tone-mapping transcode is the opposite case: it runs on CUDA (Jellyfin) and competes directly with prefill.

So the symptom pattern is diagnostic. If long prompts got slower but token streaming did not, you are tone-mapping HDR. If everything collapsed at once, you ran out of VRAM and something offloaded to system RAM — a cliff, not a slope.

Context length eats the headroom you reserved

KV cache is the quiet budget item. It scales with context length, and it is allocated in the same pool as weights and transcode surfaces.

Doubling context from 16K to 32K roughly doubles KV cache. Going to 64K doubles it again. On a 24 GB card that is an annoyance; on a 12 GB card shared with a media server it is the difference between a working configuration and a 9pm buffering complaint.

The pragmatic setting is to cap context at what you actually use. Most assistant workloads — summarise this document, answer this question about my notes — sit comfortably under 16K. Configuring 64K "just in case" spends real VRAM every second of every day to serve a case that arrives monthly.

The hardware that makes this work

The MSI GeForce RTX 3060 Ventus 3X 12G is the pivot part, and the reason is the 12 GB rather than any clock speed. An 8 GB card in the same performance class fails this workload: subtract a transcode reserve and a KV cache from 8 GB and there is no room for a useful model. The 12 GB on a 192-bit bus is what makes the configuration viable at all (TechPowerUp).

The CPU still matters, in two specific places. Software-transcode fallback happens whenever a codec or filter chain is unsupported by NVENC — 4:2:2 content, for instance, which the matrix shows Ampere cannot handle in hardware (NVIDIA). That work lands entirely on the CPU. The AMD Ryzen 7 5800X absorbs it with eight cores and sixteen threads where a quad-core stalls. Subtitle burn-in, library scans and metadata work also run on the CPU while the GPU is busy.

Storage layout

Model files are large and read once per load. That makes them a SATA-acceptable workload — the load takes a few seconds longer than it would from NVMe, and then the weights are resident in VRAM and storage speed stops mattering entirely.

A sensible split puts the model library on the Crucial BX500 1TB and the OS, Jellyfin metadata and transcode scratch on the Kingston A400 960GB. Separating them keeps a large model load from competing with metadata reads during a library scan.

Reserve NVMe for the case that actually benefits: frequent model swapping. If you rotate between four models during a working session, load time is a recurring cost and the faster drive pays for itself. The trade-off is covered in our NVMe vs SATA SSD for local LLM model libraries comparison.

The split-the-workload alternative

The other answer is not to share at all. Move Jellyfin to a Raspberry Pi 4 Model B and leave the GPU box entirely to inference.

This works well for one specific library profile: content your clients can direct-play. A Pi handles direct play and remuxing comfortably, because neither requires re-encoding. What it cannot do is multiple simultaneous full transcodes, and 4K HDR tone-mapping is firmly out of reach — there is no NVENC and no CUDA to do it with.

So the split is a library-shape decision, not a performance decision. If your files are already in client-friendly formats, the Pi is the cheaper and cleaner answer and your 12 GB goes entirely to weights. If your library is a mixed bag of formats that need transcoding, the Pi becomes the bottleneck and you are back to sharing the GPU. Storage options for that Pi are covered in Best Storage for a Raspberry Pi 4 Home Server.

Perf per watt

The combined box wins on idle draw, and idle is what a 24/7 machine mostly does.

One machine has one PSU, one motherboard and one set of idle overheads. Two machines have two of each, and the second one is drawing power around the clock to serve a workload that is active for three hours an evening. A Pi's idle draw is genuinely small, but it does not offset a second desktop-class system if you split the other way.

The GPU itself idles low when neither workload is active, and NVENC transcoding is dramatically more efficient than CPU encoding — a fixed-function block doing a job it was designed for versus general-purpose cores brute-forcing it. That efficiency argument is a large part of why putting a GPU in a media server is worthwhile even before inference enters the picture.

Verdict matrix

Run both on one box if your peak is one to three concurrent transcodes, your library is mostly SDR, and you are content in the 7B-12B class at Q4_K_M. This is the majority case and it works well.

Split them if your library is heavily 4K HDR — tone-mapping competes for CUDA directly (Jellyfin) — or your clients direct-play everything, which makes a Pi sufficient and frees the whole 12 GB.

Buy more VRAM instead if you want a 24B-class model. No amount of configuration fits 24B and a transcode reserve into 12,288 MB. That is a hardware purchase, not a tuning exercise.

Bottom line

One RTX 3060 12GB runs a Jellyfin server and a local model at the same time, and the encoder is nowhere near the limit — NVIDIA rates the card for 12 concurrent sessions (NVIDIA) against a household that peaks at two or three. Reserve your measured transcode headroom first, cap context at what you actually use, run a 7B-12B model at Q4_K_M, and disable AV1 encode because Ampere does not have it.

The counter-case is HDR. If most of what you watch is 4K HDR, tone-mapping runs on the same CUDA cores as your prompt processing, and the tidy separation this build depends on stops being true. Measure your HDR ratio before committing.

Related guides

Citations and sources

  • NVIDIA — Video Encode and Decode GPU Support Matrix — the source for the RTX 3060's 12-session NVENC ceiling, its 7th-generation single encoder, and the per-codec support rows including the absence of AV1 encode and 4:2:2.
  • Jellyfin — NVIDIA hardware acceleration — documents CUDA as the only tone-mapping method on Windows and Linux, zero-copy tone-mapping, the HEVC 10-bit decode prerequisite, headless NVENC support, and the 522.25 minimum driver for Jellyfin 10.11.
  • TechPowerUp — GeForce RTX 3060 12 GB — GA106 silicon, 3,584 shading units, 12,288 MB of GDDR6 and the 192-bit memory interface used throughout the VRAM budget.
  • llama.cpp — the K-quant formats referenced in the quantisation table.
  • Wikipedia — NVENC — background on NVENC as a dedicated fixed-function block separate from the shader cores.

Quantisation file sizes are arithmetic estimates from parameter counts and bit-widths, not measurements; verify against the specific model you intend to run. VRAM budgeting figures depend on your own measured transcode delta.

This piece is editorial synthesis based on publicly available information. No independent first-party benchmarking is reported.

Products mentioned in this article

Live Amazon & eBay pricing, plus full specs and alternatives on each product page.

As an Amazon Associate, SpecPicks earns from qualifying purchases; we also earn on qualifying eBay purchases via the eBay Partner Network. Prices shown were last tracked at crawl time and may vary — check the listing for the current price.

Watch a review

Friendly Fire: AMD Ryzen 7 5800X CPU Review & Benchmarks vs. 5600X & 5900X — Gamers Nexus on YouTube

Frequently asked questions

Does a Jellyfin transcode actually slow down token generation?
Mostly no, with one important exception. NVENC is a fixed-function encoder block that barely touches the CUDA cores your model uses, so steady-state token streaming degrades far less than people expect. The exception is HDR tone-mapping: Jellyfin documents CUDA as the only tone-mapping method on Windows and Linux, so tone-mapping does compete for shader cores and slows prompt processing. VRAM is the other risk — if concurrent sessions push your model into offload, throughput falls off a cliff rather than degrading gracefully.
Is 12 GB enough, or should I just buy a 16 GB card?
Twelve gigabytes is workable if you cap concurrent transcodes and stay in the 7B-to-14B class at four-bit quantization with a modest context window. If you want a 24B-class model, 4K HDR tone-mapping, and three simultaneous streams, you are past the budget and should either move up in VRAM or split the workloads across two machines. Decide by measuring your real stream count first.
Can a Raspberry Pi 4 handle the Jellyfin side on its own?
It handles direct play and remuxing comfortably, which covers most well-organized libraries where clients can play the source codec natively. It does not handle multiple simultaneous full transcodes, and 4K HDR tone-mapping is out of reach. If your library is already in client-friendly formats, offloading playback to the Pi and reserving the GPU for inference is the cheaper split.
Does the CPU choice still matter if the GPU does the encoding?
Yes, in two places. Software-transcode fallback happens whenever a codec or filter chain is unsupported by NVENC, and that lands entirely on the CPU. Eight modern cores absorb that gracefully where four do not. The CPU also handles subtitle burn-in, library scans, and metadata work, all of which run while your inference server is holding the GPU.
What is the most-missed configuration step?
Setting an explicit VRAM reservation for the inference runtime instead of letting it size itself to free memory at launch. If the model claims all available VRAM at startup, the first transcode request either fails or forces a fallback to software encoding, and the failure surfaces as buffering rather than as an obvious out-of-memory error. Reserve a fixed headroom and verify it under a real concurrent load.

Sources

— Mike Perry · Last verified 2026-09-03

Parts this article names

Amazon Associate — prices tracked 2026-09-04, may vary.

More guides & deep dives from the SpecPicks archive

Browse all articles & guides →

More buying guides from SpecPicks

Browse all buying guides →