majorwiki/04-streaming/plex/plex-transcoding-troubleshooting.md
majorlinux 52ca8a0413 wiki: batch update — 4 new articles + 4 updates
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)
2026-05-25 13:55:10 -04:00

5 KiB
Raw Permalink Blame History

title domain category tags status created updated
Plex Transcoding Troubleshooting streaming plex
plex
transcoding
hevc
h264
vaapi
troubleshooting
apple-tv
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 6090 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 3040% 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:

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.