A Raspberry Pi 4 8GB running Jellyfin handles direct-play streaming of any codec your devices natively support, plus single-stream H.264 1080p transcoding via the Pi's hardware encoder. It does NOT do 4K transcoding, multi-stream concurrent transcoding, or HEVC software transcoding at usable speed. Knowing exactly where the ceiling sits lets you plan a media library and client mix that never hits it.
Why a Pi 4 for Jellyfin in 2026?
The Raspberry Pi 4 8GB is the workhorse of cheap self-hosting. At roughly $85-95 for the board plus a power supply, microSD, and case, it costs less than a single year of Plex Pass plus a streaming service subscription it replaces.
Jellyfin is the open-source, free-forever Plex alternative. No license fees, no remote-streaming paywalls, no telemetry. The combination — Jellyfin + Pi 4 + a USB drive of your own media — is the cheapest credible home-media server you can build today.
The catch is transcoding. Jellyfin (like Plex) prefers "direct play" — streaming the original file to the client unchanged — because transcoding is CPU and GPU intensive. When the client cannot natively decode the source format, the server has to transcode in real time, and the Pi 4 has very specific limits.
This synthesis maps those limits exactly so you can plan around them.
Key takeaways
- Direct play: unlimited streams, only limited by network bandwidth.
- Hardware-accelerated H.264 → H.264 transcoding: 1 concurrent stream at 1080p, real-time.
- Software H.264 transcoding: ~0.7-0.9x realtime on a fast SD card, NOT recommended.
- HEVC (H.265) hardware decoding: yes, but no Pi 4 hardware encoder for HEVC. Transcoding HEVC source → H.264 output works at 1080p.
- 4K transcoding: NO. Decoder maxes at 4K decode, encoder is 1080p only.
- Concurrent streams: 1 transcode + N direct plays. Multiple simultaneous transcodes fail.
Hardware budget
| Part | Notes | Price |
|---|---|---|
| Raspberry Pi 4 8GB | 8 GB SKU recommended for OS + cache | $85 |
| Official 5V/3A power supply | Don't skimp — underpower causes crashes | $11 |
| 64 GB high-endurance microSD or eMMC | Boot drive | $15 |
| SanDisk Ultra 3D 1TB SATA SSD | Media library on a powered USB enclosure | $90 |
| FIDECO SATA/IDE-to-USB 3.0 enclosure | Houses the SSD over USB 3.0 | $25 |
| Crucial BX500 1TB SATA SSD | Alternative budget media drive | $59 |
| Heatsink + active cooling case | Mandatory under sustained load | $20 |
Total: roughly $245-260 for a Pi 4 build with a credible storage backbone. Compare to a budget mini-PC with an Intel N100 + 4 TB drive at $400-500.
What direct play means and why it dominates
Direct play is when the client device decodes the source file natively. The server sends bytes; the client decodes them. The Pi 4's only role is reading from disk and writing to the network — trivial work that scales to dozens of concurrent streams on a single Pi.
A modern Apple TV 4K, Fire TV Stick 4K Max, Roku Ultra, or smart TV can directly play:
- H.264 (Baseline, Main, High) up to 4K
- HEVC (H.265) Main and Main10 up to 4K
- AV1 on newer devices
- AAC, AC3, EAC3 audio at most bitrates
- DTS audio on many TVs (varies)
If your media library is mostly H.264 1080p or HEVC 1080p/4K, and your clients can decode those natively, the Pi 4 just shuffles bytes and you can run 5-10 concurrent streams without breaking a sweat.
When transcoding kicks in
Jellyfin transcodes in three situations:
- Subtitle burn-in. Image-based subtitles (PGS / VOBSUB) cannot be passed through to most clients; Jellyfin burns them into the video, which requires re-encoding the whole frame.
- Codec mismatch. If a client cannot decode HEVC (older browsers, some web players), Jellyfin re-encodes to H.264 on the fly.
- Bandwidth limit. If a client asks for a lower-bitrate stream (e.g., "limit to 4 Mbps" from a slow connection), Jellyfin re-encodes at the requested bitrate.
Each of these forces the Pi to decode the source, manipulate the frame, and re-encode — orders of magnitude more expensive than direct play.
Pi 4 transcoding ceiling
The Pi 4 has a Broadcom VideoCore VI GPU with hardware H.264 encode and H.264/HEVC decode. Specifically:
- Hardware H.264 decoder: up to 1080p60 at high bitrates
- Hardware H.264 encoder: up to 1080p30 at moderate bitrates (~10 Mbps)
- Hardware HEVC decoder: up to 4K30
- Hardware HEVC encoder: NONE. The Pi 4 cannot hardware-encode HEVC at all.
So the practical transcoding matrix is:
| Source codec | Target codec | Pi 4 behavior |
|---|---|---|
| H.264 1080p | H.264 1080p | Hardware accelerated, real-time ✓ |
| H.264 4K | H.264 4K | Fails. No 4K encoder. |
| H.264 4K | H.264 1080p (downscale) | Hardware decode + downscale + encode, real-time at 25-28 fps ⚠ |
| HEVC 1080p | H.264 1080p | Hardware decode + hardware encode, real-time ✓ |
| HEVC 4K | H.264 1080p | Hardware decode 4K + downscale + encode, ~24-26 fps ⚠ |
| HEVC 4K | HEVC 4K | Direct play only. Cannot transcode. |
In summary: the Pi 4 can do exactly one concurrent 1080p hardware-accelerated transcode. A second concurrent transcode forces software fallback, which is ~0.7x realtime and means the stream stutters.
Benchmark numbers
Community runs with Hardware Acceleration enabled (V4L2-M2M backend) on a Pi 4 8GB with an active cooler:
| Workload | Pi 4 result | Notes |
|---|---|---|
| 1080p H.264 direct play | 1+ Gbps possible (bottleneck is USB or network) | trivial CPU load |
| 1080p H.264 → 1080p H.264 (10 Mbps target) | 1 stream, 27-30 fps | sustained, ~95% CPU + GPU usage |
| 1080p H.264 → 720p H.264 (3 Mbps target) | 1 stream, 30+ fps | usable, ~80% CPU |
| 1080p HEVC → 1080p H.264 | 1 stream, 24-26 fps | borderline; client may buffer |
| 4K HEVC → 1080p H.264 | 1 stream, 18-22 fps | NOT real time; stuttering common |
| Two concurrent 1080p H.264 transcodes | fails (software fallback) | both streams stutter |
The 4K → 1080p downscale-transcode case is the most common failure mode. People assume "the Pi 4 can decode 4K" means "it can transcode 4K." It cannot. The decoder handles the input fine; the encoder cannot keep up at 1080p when fed downscaled frames at 24+ fps.
How to design your library to never hit the ceiling
Three rules:
- Standardize on H.264 1080p for content most-watched on browsers and older clients. H.264 1080p direct-plays everywhere; no transcode pressure.
- Keep HEVC reserved for content viewed only on modern HEVC-capable clients. Apple TV 4K, Fire TV Stick 4K Max, recent Android TV boxes, and most 2019+ smart TVs handle HEVC direct play.
- Avoid image-based subtitles where possible. If a TV show has PGS subtitles, extract them to SRT format using
mkvextractandpgsripbefore adding to Jellyfin. SRT direct-plays; PGS forces burn-in transcoding.
Practical workflow: keep two libraries, "1080p direct-play H.264" for casual viewing and "4K HEVC archive" for big-screen Apple TV viewing only. Map clients to libraries accordingly.
Storage advice — USB 3.0, not microSD
The Pi 4 has two USB 3.0 ports. Use them.
- Boot drive: 64 GB high-endurance microSD (Samsung Endurance, SanDisk High Endurance). Boots Pi OS, hosts Jellyfin install.
- Media drive: external USB 3.0 SSD enclosure. Plug a SanDisk Ultra 3D 1TB SATA SSD or Crucial BX500 1TB into a FIDECO USB 3.0 enclosure.
A spinning USB drive works too if you have a 4 TB external lying around, but SSD is silent, faster, and reliably draws under the USB 3.0 power budget without an external supply.
Do NOT run Jellyfin off a microSD. Sustained reads at 4K+ direct-play bitrates wear the card and the cards are slow under random I/O. The boot card is fine; media must be on USB.
Common pitfalls
- Trying to run two transcodes concurrently: it just doesn't work. Direct play whatever you can and only allow one transcode at a time in the Jellyfin server settings.
- Forgetting active cooling: the Pi 4 throttles aggressively above ~80°C. Under sustained transcode load it heats fast; a $20 active-cooled case is non-optional.
- Underpowered USB: bus-powered hard drives spike to 1A on spin-up and can crash the Pi. Use a powered hub or an SSD that stays under 900 mA.
- Misconfigured hardware acceleration: Jellyfin defaults to no hardware accel. You must explicitly enable V4L2-M2M in the dashboard or all transcoding falls back to slow software.
- Library on a 2.5" mechanical USB drive without spin-down config: drives that spin down to save power add 5-8 seconds of stutter when a stream starts. Disable spin-down or use SSD.
When NOT to use a Pi 4 for Jellyfin
- Heavy 4K transcoding workloads: get a mini-PC with Intel Quick Sync. An N100 or N305 transcodes 4K all day for ~$200-300 total.
- Multiple concurrent transcodes from non-direct-play clients: again, mini-PC.
- Plex Live TV with multiple recorders: tuner work on a Pi is OK; recording multiple streams simultaneously eats the USB bandwidth.
- DVR with high write bandwidth: write loads kill SD cards; spinning drives or SSD are mandatory.
What about the Pi 5?
The Raspberry Pi 5 ships at $80 for the 8 GB SKU and roughly doubles CPU performance over the Pi 4. The transcoding picture only marginally improves, though, because the Pi 5 still has hardware H.264 encode at 1080p only and no HEVC encoder. The big wins are on CPU-bound work and PCIe-attached NVMe.
If you are starting fresh in 2026 and the Pi 5 8 GB is in stock at MSRP, take it. If you already own a Pi 4 8 GB, the upgrade is hard to justify for Jellyfin specifically — the transcoding limits are the same.
Networking and bandwidth math
A frequently overlooked planning step is how much network bandwidth each stream actually consumes, because even when transcoding is not the constraint, your home network might be.
| Source | Typical bitrate | Concurrent streams on 100 Mbps |
|---|---|---|
| 1080p Blu-ray rip (H.264) | 8-15 Mbps | 6-12 |
| 1080p web-DL (H.264) | 4-6 Mbps | 16-24 |
| 4K Blu-ray rip (HEVC) | 40-80 Mbps | 1-2 |
| 4K web-DL (HEVC) | 12-25 Mbps | 4-8 |
| Transcoded 1080p H.264 (default) | 8 Mbps | 12 |
| Transcoded 720p H.264 (mobile) | 3 Mbps | 33 |
The Pi 4's gigabit Ethernet handles much more than the transcoder will ever produce; the network is not the bottleneck for local play. Where it matters is remote streaming over the home upload — if your ISP gives you a 20 Mbps upload, you can stream one 4K HEVC web-DL or two 1080p web-DL streams remotely, period.
For remote viewing, configure Jellyfin's "Internet bandwidth limit" per user and set it to ~80% of your upload to avoid bufferbloat. That forces the transcoder to drop quality before saturating the link.
Bottom line
A Raspberry Pi 4 8 GB running Jellyfin is the cheapest credible home-media server in 2026 — but it lives or dies on direct play. Standardize your library on H.264 1080p with SRT subtitles for casual clients, reserve HEVC 4K for direct-play-only clients like an Apple TV 4K, and accept that exactly one concurrent transcode is the ceiling.
For most home setups — one TV, two phones, a tablet, occasional remote stream — that ceiling is invisible. For a household streaming three transcoded streams simultaneously, you have outgrown the Pi 4 and an Intel N100 mini-PC is the next step.
Related guides
- Self-Hosted Immich on a Raspberry Pi 4 8GB: Photo Backup Without the Cloud
- Self-Host Jellyfin and Home Assistant on a Raspberry Pi 4 8GB in 2026
- Build a Plex Media Server on a Raspberry Pi 4 8GB in 2026
- Build a Live ADS-B Flight Tracker on a Raspberry Pi 4 in 2026
- Run a Local LLM on a Raspberry Pi 4 8GB: What Works in 2026
Citations and sources
- Jellyfin — official documentation — hardware acceleration reference for V4L2-M2M and Pi-specific transcoding behavior.
- Raspberry Pi Foundation — Raspberry Pi 4 specifications — official VideoCore VI encoder and decoder capabilities.
- r/jellyfin on Reddit — community measurements of transcoding throughput on Pi 4 with hardware acceleration enabled.
This piece is editorial synthesis based on publicly available information. No independent first-party benchmarking is reported.
