Linux Tutorials

Best GPU for Jellyfin and Plex Transcoding: Quick Sync vs Arc

This post contains affiliate links. If you buy through them, we may earn a small commission at no extra cost to you. Learn more.

You have three ways to get hardware transcoding for Jellyfin or Plex: the Quick Sync engine already inside most Intel CPUs, a cheap Intel Arc card, or an NVIDIA card with NVENC. We ran Jellyfin’s own transcode commands on two Intel iGPUs in a Proxmox LXC to count real streams, and the numbers changed which card we would tell most people to buy.

Original content from computingforgeeks.com - post 173036

Below are five picks with today’s Amazon prices, the stream counts we measured, the two errors that broke 4K HDR playback in our container, and a small script that counts concurrent streams on your own hardware. Plex gets its own section, because it charges for hardware transcoding and handles HDR and AV1 differently.

Tested October 2026 on Jellyfin 12.1 with jellyfin-ffmpeg 8.1.3.

Quick picks

PickPriceBest forSession capAV1 encode
Intel Core Ultra 5 225$178.13New build, no GPU at allNoneYes
Sparkle Arc A380 ELF$169.99Adding transcoding to a Ryzen, Xeon or EPYC boxNoneYes
ASRock Arc B570 Challenger$289.99The most SDR streams under $300NoneYes
MSI RTX 3050 LP 6G OC$279.99Slim office PCs with no PCIe power cable12No
PNY RTX 2000 Ada 16GB$769.99Many 4K HDR viewers at onceNoneYes

Prices are what Amazon showed on October 14, 2026. Session cap is NVIDIA’s driver limit on simultaneous NVENC encodes. Intel and AMD have no such limit. If you only pick one, it’s the A380. It is the cheapest way to add a full hardware pipeline to a server that has no Intel iGPU.

How many streams an Intel iGPU really handles

Published stream counts are hard to compare, because every tester picks a different file and a different idea of real time. So we measured it ourselves. We created two unprivileged Debian 12 LXC containers on Proxmox, passed the render node into each, and installed Jellyfin 12.1 from the official repository. One container sat on an i7-1165G7 with Iris Xe graphics, the other on an i7-6700 with HD Graphics 530. Both had 4 cores and 4 GB of RAM.

We played each test file through Jellyfin’s API, copied the exact ffmpeg command it generated from the transcode log, then ran 1, 2, 3 and more copies of that command at once. A stream count only counts if the slowest copy stays at or above the source’s frame rate. The sources were Jellyfin’s own 30 second test clips, all at 60 fps: a 1080p H.264 file at 20 Mbps, a 4K HEVC 10-bit HDR10 file at 60 Mbps and a 4K AV1 HDR10 file at 40 Mbps. The 4K jobs output 1080p H.264 at 8 Mbps with tone mapping, and the 1080p job outputs 720p at 4 Mbps.

Terminal output showing vainfo HEVC Main10 and AV1 entrypoints on Iris Xe and 1 to 4 concurrent 4K HDR Jellyfin transcodes

The Iris Xe tops out near 220 fps in total on the 4K HDR job, whether it runs two streams or four. Three streams hold 73 fps each, which clears 60. Four drop to 55, which does not. The full results:

Source to outputIris Xe (11th gen)HD 530 (6th gen)
1080p60 H.264 to 720p10 streams (646 fps total)4 streams tested, 453 fps total
4K60 HEVC HDR10 to 1080p, tone mapped3 streams (218 fps total, 220 peak)0: no 10-bit HEVC decode, software fallback ran at 40 fps
4K60 AV1 HDR10 to 1080p, tone mapped3 streams (231 fps total)0: no AV1 decode, software fallback ran at 42 fps

Most films run at 24 fps, not 60. At four streams every copy still ran at 55 fps, more than twice a film’s frame rate, and the 220 fps budget works out to about nine 24 fps streams on paper. We tried eight at once and the 4 GB container ran out of memory first: the kernel’s OOM killer took out one ffmpeg process. Give a Jellyfin LXC more RAM before you plan on that many HDR viewers. The HD 530 row stops at four. The Proxmox host reset itself during the six stream run.

Jellyfin offers two tone mapping paths on Intel. OpenCL is the default, and Intel’s fixed-function VPP is an option. On the Iris Xe, VPP peaked at 194 fps against OpenCL’s 220, and both landed on three 60 fps streams. VPP uses less power, so it is still worth trying on a NAS that idles most of the day.

For cards we could not test, we used the public SpaceinvaderOne transcoding leaderboard. It runs the same jellyfin-ffmpeg build on machines its users submit, with 24 fps source clips. A stream counts when the slowest copy keeps real time. Without tone mapping, an A380 does 9 streams of 4K HEVC to 1080p and an RTX 3050 6GB does 5. Its HDR test tone maps the full 4K frame first and scales afterwards, on every vendor. Jellyfin scales to 1080p first and tone maps a quarter of the pixels. On that test desktop Intel iGPUs and Arc A-series cards median 3 HDR streams, N100 class chips 2 and the Arc B580 8, while NVIDIA scales with the card: 5 on an RTX 3050 6GB, 11 on an RTX 3060 12GB, 15 on an RTX 2000 Ada.

NVIDIA’s HDR counts already match its SDR counts (5 and 5 on the RTX 3050, 16 and 15 on the RTX 2000 Ada), while an A380 drops from 9 to 3. So 4K tone mapping is Intel’s bottleneck on that board, and the board’s HDR column favours NVIDIA. In Jellyfin’s scale-first pipeline our laptop Iris Xe had, by its fps budget, room for about nine 24 fps HDR streams. That matches the A380 SDR count on the board.

The picks

1. Intel Core Ultra 5 225: skip the GPU entirely

Intel Core Ultra 200S series desktop processor render
Intel Core Ultra 200S render. The Core Ultra 5 225 iGPU does AV1 encode.

If you are building a new server, the cheapest transcoding GPU is the one inside the CPU. The Core Ultra 5 225 is an Arrow Lake chip with 10 cores, a 65 W base power rating and Intel Graphics with 2 Xe-cores. Intel lists hardware AV1 encode and decode for it, which neither Tiger Lake nor the N100 family can do. On the leaderboard, Arrow Lake desktop iGPUs on DDR5 median 12 streams of 4K HEVC to 1080p and 3 on its 4K-first HDR test, the same as an Arc card. That row mixes several Core Ultra 200S chips, and the 225 has the smallest Xe-core count of them, so test HDR load on yours before you plan on many viewers.

The catch: it needs a new LGA1851 board and DDR5, so it is no help for an existing box. Do not buy the 225F, which has no graphics at all. If you would rather stay on LGA1700, the Core i5-14500 carries UHD 770 with two media engines, but no AV1 encode.

2. Sparkle Intel Arc A380 ELF: the default add-in card

Sparkle Intel Arc A380 ELF 6GB graphics card
Sparkle Intel Arc A380 ELF 6GB. Slot powered, no PCIe cable.

For a Ryzen, Xeon or EPYC server with no Intel iGPU, this is the card we would buy. It is a full-height, dual-slot card with 6 GB of GDDR6 that Sparkle says needs no external PCIe power. It carries the same two media engines as every Arc A-series card, encodes AV1, and Jellyfin has no session limit on Intel. The leaderboard median is 9 streams of 4K HEVC to 1080p and 3 on its HDR test, and our Iris Xe result suggests more in Jellyfin’s own pipeline.

On Linux it needs kernel 6.2 or newer. Jellyfin recommends Resizable BAR and says turning it off costs about 10 percent of transcoding speed. Turn on ASPM in the BIOS too. Jellyfin’s Intel page says it greatly reduces Arc’s idle power draw. If price matters more than a slot-powered card, the ASRock Arc A380 Challenger ITX is $159.97 for the same chip.

Where it falls short: full height only. It will not fit a low-profile slot, and the low-profile A310 that used to fill that gap is out of stock (see below).

3. ASRock Arc B570 Challenger: the most SDR streams under $300

ASRock Intel Arc B570 Challenger 10GB OC graphics card
ASRock Intel Arc B570 Challenger 10GB OC.

Battlemage brings 10 GB of VRAM and, per Jellyfin, slightly faster encoding than Arc A-series. On the leaderboard its first submitted run does 15 streams of 4K HEVC to 1080p, close to an RTX 2000 Ada for a third of the price. Nobody has posted a B570 HDR run yet. Its bigger sibling, the B580, medians 8 HDR streams, the best of any Intel card on the board.

Check two things first. Jellyfin says B-series cards need Linux kernel 6.12 or newer, and Resizable BAR is mandatory, or the media driver crashes the transcoder. That means an Intel 10th gen or Ryzen 3000 platform or newer. Proxmox VE 8 ships a 6.8 kernel, so an LXC setup needs Proxmox’s opt-in 6.14 kernel or Proxmox VE 9. Plex only added Battlemage support in Plex Media Server 1.43.1, released in April 2026, so update before you swap cards.

Skip it if your case is small: it is a 150 W gaming card that needs a PCIe power cable, and it will not go in a slim office PC or most NAS cases.

4. MSI GeForce RTX 3050 LP 6G OC: for slim PCs and Plex HDR

MSI GeForce RTX 3050 LP 6G OC low-profile graphics card
MSI GeForce RTX 3050 LP 6G OC. Low profile, 70 W.

The RTX 3050 6GB draws 70 W from the slot with no extra power connector, according to NVIDIA, and MSI’s LP version fits low-profile brackets. That makes it the card for a Dell OptiPlex SFF or a Lenovo ThinkStation that cannot take an Arc. It is also the safer card for Plex with HDR: Plex documents NVIDIA tone mapping on Linux with driver 470.141.03 or newer, and says nothing either way about Arc.

What it cannot do: 7th generation NVENC has no AV1 encode, the GeForce driver caps it at 12 simultaneous encodes, and on the leaderboard it does 5 streams of 4K HEVC to 1080p against the A380’s 9. Jellyfin’s hardware guide rates Intel’s encoder quality slightly above every NVIDIA generation before Blackwell.

5. PNY RTX 2000 Ada 16GB: the most 4K HDR streams in 70 W

PNY NVIDIA RTX 2000 Ada Generation 16GB graphics card
PNY NVIDIA RTX 2000 Ada Generation 16GB.

If you have a family of remote viewers on 4K HDR, this is the card that keeps up. NVIDIA rates it at 70 W in a low-profile, dual-slot form factor with 16 GB of ECC memory and 8th generation NVENC with AV1 encode. NVIDIA’s support matrix lists its session limit as unrestricted, unlike GeForce. The leaderboard median is 16 streams of 4K HEVC to 1080p and 15 on the HDR test, five times what Arc A-series cards score there.

The downside is price: it costs $769.99 from a third-party seller. If you serve two or three people, an A380 does the same job for a fifth of the money.

Why the Arc A310 is not on this list

The A310 is the card most homelab threads recommend, and its two media engines match the A380’s. In mid-October 2026, though, every A310 we checked on Amazon shows as currently unavailable: the two low-profile versions (the Sparkle A310 ECO and the ASRock A310 Low Profile) and the full-height Sparkle A310 Omni View. When the Omni View was last in stock on October 5 it cost $248.01, more than an A380, and it does fewer streams on the leaderboard (6 against 9 without tone mapping). Buy the A380 instead.

A few other common suggestions we left out:

  • NVIDIA T400 and T1000: slot powered and small, but NVIDIA caps both at 8 concurrent encodes, they lack AV1, and they sell for $289.00 and $437.00 right now.
  • GTX 1650: Jellyfin’s hardware guide excludes it by name, and NVIDIA’s matrix shows most GTX 1650 variants use a 6th gen encoder with no HEVC B-frames.
  • Any AMD card: Jellyfin’s documentation says AMD “is NOT recommended” for both discrete and integrated graphics, citing H.264 encoder quality and driver support.
  • Arc Pro B50: a 70 W low-profile Battlemage card that would be ideal, but Amazon only has reseller listings near $620.

Jellyfin vs Plex: what changes for hardware transcoding

Jellyfin does hardware transcoding for free. Plex needs an active Plex Pass on the server owner’s account, which costs $6.99 a month, $69.99 a year or $749.99 for the lifetime pass since July 1, 2026. The cheaper Remote Watch Pass only unlocks remote streaming, not hardware transcoding.

FeatureJellyfin 12.1Plex Media Server
Hardware transcodingFreePlex Pass required
Output codecsH.264, HEVC, AV1H.264 and HEVC (HEVC on by default since 1.43.1)
HDR tone mapping on LinuxIntel (OpenCL or VPP), NVIDIA (CUDA)Intel from Kaby Lake, NVIDIA with driver 470.141.03+
Intel Arc B-seriesKernel 6.12+ and Resizable BARFrom 1.43.1 (April 2026)
NVIDIA GeForce session cap1212

The hardware advice does not change between them. Intel has no session limit in either server, and NVIDIA’s cap comes from the driver, so Plex hits it at the same point Jellyfin does. One gap: Plex’s documentation does not say whether HDR tone mapping works on Arc under Linux, and in 2024 Plex staff said it did not. If you run Plex with HDR files, test an Arc card inside the return window.

Two errors that broke 4K HDR playback in our LXC

Both containers played 1080p H.264 fine on the first try. 4K HDR failed on both, for two different reasons. Jellyfin’s web player only showed a generic playback error. The real messages were in the transcode log under /var/log/jellyfin/.

Failed to get number of OpenCL platforms: -1001

With tone mapping on, the first 4K HDR transcode on the Iris Xe container died before it encoded a frame:

[OpenCL @ 0x706b00d01fc0] Failed to get number of OpenCL platforms: -1001.
Device creation failed: -19.
Failed to set value 'opencl=ocl@va' for option 'init_hw_device': No such device

Jellyfin’s default tone mapping uses OpenCL, and the jellyfin-ffmpeg package does not pull in Intel’s OpenCL runtime. Install it inside the container, then retry playback. No Jellyfin restart was needed:

sudo apt install -y intel-opencl-icd

ffmpeg should now find the GPU as an OpenCL device:

sudo /usr/lib/jellyfin-ffmpeg/ffmpeg -v verbose -init_hw_device vaapi=va:/dev/dri/renderD128 -init_hw_device opencl=ocl@va 2>&1 | grep OpenCL

On the Iris Xe it printed the device and the VA-API sharing functions it needs:

[OpenCL @ 0x62f7a6c52900] 0.0: Intel(R) OpenCL HD Graphics / Intel(R) Iris(R) Xe Graphics [0x9a49]
[OpenCL @ 0x62f7a6c52900] Intel QSV to OpenCL mapping function found (clCreateFromVA_APIMediaSurfaceINTEL).
[OpenCL @ 0x62f7a6c52900] Intel QSV in OpenCL acquire function found (clEnqueueAcquireVA_APIMediaSurfacesINTEL).
[OpenCL @ 0x62f7a6c52900] Intel QSV in OpenCL release function found (clEnqueueReleaseVA_APIMediaSurfacesINTEL).

Debian 12’s package is an older 22.43 build. Jellyfin’s docs say Arc A380 and N100 class chips need runtime 23.xx or newer, so on those, install Intel’s compute-runtime release from GitHub instead.

No support for codec hevc profile 2

On the HD 530 container, the same file failed differently:

[hevc @ 0x7e9d79ee8080] No support for codec hevc profile 2.
[hevc @ 0x7e9d79ee8080] Failed setup for format vaapi: hwaccel initialisation returned error.
Impossible to convert between the formats supported by the filter 'Parsed_setparams_0' and the filter 'auto_scale_0'

HEVC profile 2 is Main 10, and 6th gen Skylake graphics cannot decode it. Intel added 10-bit HEVC with 7th gen Kaby Lake, and AV1 decode with 11th gen Tiger Lake. Jellyfin does not fall back to software decoding while the HEVC 10bit box is ticked, so playback just stops. Under Dashboard, Playback, Transcoding, tick only the codecs your chip decodes:

Jellyfin 12.1 Transcoding settings with Intel QuickSync QSV selected, hardware decoding codecs and low-power encoders

That screenshot is the Iris Xe container, where every ticked codec decodes in hardware. On the HD 530 we unticked HEVC 10bit, VP9 10bit, VP9 and AV1, and also both Intel Low-Power encoder boxes. Jellyfin’s docs say low-power mode on older chips needs a manual i915 kernel parameter, and we left the Proxmox host’s kernel alone. After that, the 4K HDR file played: decoded in software at 40 fps, tone mapped with OpenCL and encoded on the iGPU. That is fine for one 24 fps film and a reason to retire a 6th gen box for anything more.

Count streams on your own hardware

The method above works on any Jellyfin server. In a Proxmox LXC, pass the render node through first, using the container’s own render group ID. Find it inside the container:

getent group render

Ours printed GID 104 on Debian 12. Then, on a Proxmox VE 8.1 or newer host, using your container’s ID in place of 249:

pct set 249 --dev0 /dev/dri/renderD128,gid=104
pct reboot 249

Install Jellyfin and add a library. Under Dashboard, Playback, Transcoding, set Hardware acceleration to Intel QuickSync (QSV), tick the codecs your chip decodes, and turn on tone mapping further down the same page. Then play a demanding file once from a client at the bitrate you care about. Jellyfin writes the ffmpeg command it used to a log. This pulls the newest one into a command file, swaps the HLS output for a null output, and limits each run to 60 seconds of video, looping short files:

LOG=$(sudo ls -t /var/log/jellyfin/ | grep -m1 '^FFmpeg.Transcode')
sudo grep -a -m1 '^/usr/lib/jellyfin-ffmpeg/ffmpeg' "/var/log/jellyfin/$LOG" | sed -E 's/ -copyts.*$//; s/-i file:/-stream_loop -1 -t 60 -i file:/; s#^/usr/lib/jellyfin-ffmpeg/ffmpeg#/usr/lib/jellyfin-ffmpeg/ffmpeg -nostdin -y#' > hevc4k-hdr.cmd

Save this as streams.sh. It is the exact script behind every number in this guide, and it needs python3 for the arithmetic:

# usage: streams.sh <cmdfile> <number-of-streams>
CMD=$(cat $1); N=$2; T=$(mktemp -d)
for i in $(seq $N); do
  ( s=$(date +%s.%N); eval "$CMD" -f null - >/dev/null 2>$T/$i.err; e=$(date +%s.%N); echo "$s $e" > $T/$i.t ) &
done
wait
tot=0; min=99999
for i in $(seq $N); do
  fr=$(grep -ao 'frame= *[0-9]*' $T/$i.err | tail -1 | grep -o '[0-9]*$')
  read s e < $T/$i.t; fps=$(python3 -c "print(round($fr/($e-$s),1))")
  tot=$(python3 -c "print(round($tot+$fps,1))"); min=$(python3 -c "print(min($min,$fps))")
  grep -aqiE "conversion failed|error while" $T/$i.err && echo "proc $i FAILED: $(grep -aiE 'error|fail' $T/$i.err | tail -2)"
done
echo "N=$N min_fps=$min sum_fps=$tot"
rm -rf $T

Your user needs access to the render node, so add it to the render group and log in again. Then make the script executable and step up the count until the slowest stream drops below your source’s frame rate:

sudo usermod -aG render $USER
chmod +x streams.sh
for n in 1 2 3 4; do ./streams.sh hevc4k-hdr.cmd $n; done

The min_fps column is the slowest stream. For a 24 fps film it needs to stay above 24, and for a 60 fps clip above 60. sum_fps shows where the engine saturates. Once it stops climbing, extra streams just split the same budget. Watch free -h while it runs, since a memory-limited container fails before the GPU does.

Price per stream at today’s prices

Dividing each card’s Amazon price by its leaderboard median gives the cost of one simultaneous stream. Without tone mapping, the A380 and B570 cost $18 to $20 per stream, about a third of the $48 to $64 NVIDIA charges. On the leaderboard’s 4K-first HDR test, the A380, RTX 3050 LP and RTX 2000 Ada all land between $51 and $57 per stream. That test favours NVIDIA over Intel in Jellyfin terms, so for HDR the A380 is better value than this column shows.

CardPrice4K HEVC to 1080p streams ($ per stream)Leaderboard HDR test streams ($ per stream)
Arc A380 Challenger ITX$159.979 ($17.77)3 ($53.32)
Arc A380 ELF$169.999 ($18.89)3 ($56.66)
Arc B570 Challenger$289.9915 ($19.33)not on the board
RTX 3050 LP 6G$279.995 ($56.00)5 ($56.00)
T1000 8GB$437.008 ($54.63)8 ($54.63)
T400 4GB$289.004.5 ($64.22)4 ($72.25)
RTX 2000 Ada 16GB$769.9916 ($48.12)15 ($51.33)

Leaderboard medians come from submitted runs pulled on October 5, 2026. The B570 and T1000 SDR figures and the RTX 3050, T400 and T1000 HDR figures rest on a single run each, so treat them as provisional. For the server around the card, see our NAS picks for Plex and Jellyfin, the mini PCs we would run Proxmox on, and our GPU guide for Proxmox passthrough if the card is going into a VM rather than an LXC. To set up the server itself, follow the Jellyfin install guide for Ubuntu and Debian or run Plex in Docker, and check Jellyfin’s Intel hardware acceleration page for your exact chip.

Keep reading

Best Used Tiny PCs for a Homelab: Lenovo Tiny vs Dell Micro vs HP Mini (2026) Proxmox Best Used Tiny PCs for a Homelab: Lenovo Tiny vs Dell Micro vs HP Mini (2026) Best IP-KVM for a Homelab: JetKVM vs PiKVM vs NanoKVM vs Comet Proxmox Best IP-KVM for a Homelab: JetKVM vs PiKVM vs NanoKVM vs Comet Best Mini PC for a Homelab, Proxmox, and Self-Hosting Proxmox Best Mini PC for a Homelab, Proxmox, and Self-Hosting Best Arm Mini PC for a Homelab: MS-R1 vs Orion O6 vs Mac mini Proxmox Best Arm Mini PC for a Homelab: MS-R1 vs Orion O6 vs Mac mini Black Friday Mini PC Deals: Proxmox, Local AI and Home Assistant AI Black Friday Mini PC Deals: Proxmox, Local AI and Home Assistant Intel Core 3 304 vs N150 vs N355 vs N305: Best Budget Chip for a Homelab Proxmox Intel Core 3 304 vs N150 vs N355 vs N305: Best Budget Chip for a Homelab

Leave a Comment

Press ESC to close