New articles: - Postfix SendGrid TLS handshake failure (port 465 vs 587) - Plex transcoding troubleshooting - Ansible Ubuntu reboot detection kernel mismatch - WSL2 PyTorch checkpoint Windows filesystem deadlock Updated: - AWS S3 cost management (expanded) - Network overview (IP updates) - HEVC VAAPI batch encode (progress + fixes) - SUMMARY.md (new entries)
126 lines
5 KiB
Markdown
126 lines
5 KiB
Markdown
---
|
||
title: "Plex Transcoding Troubleshooting"
|
||
domain: streaming
|
||
category: plex
|
||
tags: [plex, transcoding, hevc, h264, vaapi, troubleshooting, apple-tv]
|
||
status: published
|
||
created: 2026-05-22
|
||
updated: 2026-05-22
|
||
---
|
||
|
||
# Plex Transcoding Troubleshooting
|
||
|
||
Common issues when Plex is transcoding instead of direct playing, and how to fix them.
|
||
|
||
## Playback Stops After ~1 Minute
|
||
|
||
**Symptom:** Video starts normally, plays for 60–90 seconds, then freezes or stops. Hitting play again works briefly, then stops again.
|
||
|
||
**Cause:** The Plex server is software-transcoding the stream and the CPU can't keep up in real time. Plex delivers video as a series of short HLS segments (3 seconds each by default). When the transcoder falls behind real-time, the client exhausts its segment buffer and stops.
|
||
|
||
This is most common when:
|
||
- The client has an auto-quality or bandwidth-limit setting enabled, forcing a transcode even for natively supported codecs
|
||
- The source file is HEVC and the client is set to anything other than "Play Original"
|
||
- Multiple streams are transcoding concurrently and saturating the CPU
|
||
|
||
### How to Confirm
|
||
|
||
SSH into the Plex host and check for an active software transcode:
|
||
|
||
```bash
|
||
ps aux | grep 'Plex Transcoder' | grep -v grep
|
||
```
|
||
|
||
Look for `libx264` or `libx265` in the output — these are CPU software encoders. A CPU% above 30–40% per stream on an i7-7700K means it's at or near the real-time limit for 1080p60.
|
||
|
||
### Fix: Enable Direct Play
|
||
|
||
The correct fix is to eliminate the transcode entirely.
|
||
|
||
**On Apple TV:**
|
||
1. Open the Plex app → tap the user icon → **Settings**
|
||
2. Go to **Quality**
|
||
3. Set both **"Home Streaming"** and **"Remote Streaming"** to **"Play Original"** (or "Maximum")
|
||
4. Restart playback
|
||
|
||
Apple TV 4K supports direct play for H.264, HEVC (H.265), and most common containers (MP4, MKV). With "Play Original" set, Plex streams the file as-is with no server-side processing.
|
||
|
||
**On other clients:** Look for a Quality or Streaming Quality setting and set it to Original/Maximum. The specific label varies by app version.
|
||
|
||
### If Direct Play Isn't Possible
|
||
|
||
If the client genuinely can't decode the source codec (e.g., a browser playing HEVC), reduce the transcode quality to something the CPU can sustain in real time:
|
||
|
||
- **8 Mbps 1080p** is usually achievable for a single stream on an i7-7700K
|
||
- Avoid 1080p60 at high bitrates — the frame rate doubles the encoding work
|
||
|
||
Alternatively, enable hardware transcoding (see below).
|
||
|
||
---
|
||
|
||
## Understanding When Plex Transcodes
|
||
|
||
Plex will transcode (convert on the fly) when any of the following are true:
|
||
|
||
| Trigger | Example |
|
||
|---------|---------|
|
||
| Client can't decode the codec | Browser playing HEVC |
|
||
| Client quality is set below original | "8 Mbps 1080p" selected |
|
||
| Audio codec isn't supported by client | DTS-MA, TrueHD on some devices |
|
||
| Subtitles need burning in | Forced image-based subs (PGS) |
|
||
| Bandwidth limit set in Plex server settings | Server-side quality cap |
|
||
|
||
Direct play happens when the client supports the video codec, audio codec, container, and no quality downgrade is requested.
|
||
|
||
---
|
||
|
||
## Hardware Transcoding (VAAPI / RX 480)
|
||
|
||
majorhome has an XFX Radeon RX 480 8GB with VAAPI support. Hardware transcoding can offload video encoding from the CPU and allows more concurrent transcode streams.
|
||
|
||
**Enable in Plex:**
|
||
Settings → Transcoder → **"Use hardware acceleration when available"** (requires Plex Pass)
|
||
|
||
**Caveats:**
|
||
- The RX 480 VAAPI encoder (`hevc_vaapi`, `h264_vaapi`) is benchmarked ~3× slower than the i7-7700K CPU for single-stream x264 output on this workload. Hardware transcoding only wins when the CPU is already saturated (2+ concurrent streams).
|
||
- VAAPI hardware transcode on AMD requires the `radeonsi` Mesa driver and `libva-mesa-driver`. Both are present on majorhome.
|
||
|
||
**Check VAAPI is working:**
|
||
```bash
|
||
vainfo 2>/dev/null | grep -E "VAProfile|VAEntrypoint"
|
||
```
|
||
|
||
---
|
||
|
||
## CPU Transcoding Capacity (i7-7700K)
|
||
|
||
| Scenario | CPU Load | Sustainable? |
|
||
|----------|----------|-------------|
|
||
| 1× HEVC → H.264 1080p30 | ~20% | ✅ Yes |
|
||
| 1× HEVC → H.264 1080p60 | ~40% | ⚠️ Borderline — may drop behind |
|
||
| 2× HEVC → H.264 1080p60 | ~80% | ❌ Will fall behind in real time |
|
||
| 1× H.264 → H.264 1080p (remux only) | ~5% | ✅ Yes |
|
||
|
||
**Bottom line:** One software-transcode stream at 1080p60 is at the edge of what the i7-7700K can sustain. Two will fail. Direct play eliminates the problem entirely.
|
||
|
||
---
|
||
|
||
## Checking Active Transcode Sessions
|
||
|
||
```bash
|
||
# See all active Plex Transcoder processes and what they're encoding
|
||
ps aux | grep 'Plex Transcoder' | grep -v grep | grep -oP '\-i \S+' | sed 's/-i //'
|
||
|
||
# Full transcode command (codec, bitrate, resolution)
|
||
ps aux | grep 'Plex Transcoder' | grep -v grep
|
||
```
|
||
|
||
You can also see active sessions in Plex Web → Dashboard → Now Playing.
|
||
|
||
---
|
||
|
||
## Related
|
||
|
||
- [Plex 4K Codec Compatibility (Apple TV)](plex-4k-codec-compatibility.md)
|
||
- [[../../../MajorInfrastructure/Services/Plex|Plex — Infrastructure Doc]]
|
||
- [[../../../../30-Areas/MajorInfrastructure/Servers/majorhome|majorhome]]
|