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)
5 KiB
| title | domain | category | tags | status | created | updated | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Plex Transcoding Troubleshooting | streaming | plex |
|
published | 2026-05-22 | 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:
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:
- Open the Plex app → tap the user icon → Settings
- Go to Quality
- Set both "Home Streaming" and "Remote Streaming" to "Play Original" (or "Maximum")
- 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
radeonsiMesa driver andlibva-mesa-driver. Both are present on majorhome.
Check VAAPI is working:
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
# 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.