High CPU usage during media playback usually means the server is doing more than sending the original file. It may be decoding and re-encoding video, burning subtitles into every frame, converting HDR for an SDR client, downscaling resolution, or creating a lower-bitrate stream for a remote connection.
However, high CPU does not automatically prove that the processor is too weak. Hardware acceleration may be working only for part of the pipeline, a background analysis task may be running at the same time, or several sessions may be competing for the same resources. The first step is to identify the playback mode and the process actually consuming the CPU.
Check the Playback Mode Before Blaming the Hardware
Open the server dashboard while the problem stream is active. Plex, Jellyfin, Emby, and similar platforms normally show whether the session is using Direct Play, Direct Stream or Remux, audio conversion, or full video transcoding.
Direct Play sends the original container, video, audio, and supported subtitle tracks to the client. Remux or Direct Stream changes only part of the delivery format, often without re-encoding the video. A video transcode decodes the source and creates a new video stream, making it the most likely path to sustained high CPU usage.
This distinction determines the next test. High CPU during a confirmed video transcode may be expected if processing is being performed in software. High CPU during Direct Play usually points toward another session, a background analysis task, or a different process running on the server.
| Playback State | Server Work | What High CPU Suggests |
| Direct Play | Read and deliver the original file | Check background jobs, another process, or another session |
| Remux / Direct Stream | Repackage streams or convert audio | Sustained heavy CPU is unusual; inspect the exact task |
| Audio Transcode | Convert or downmix the audio track | Usually lighter than video; check for additional processing |
| Video Transcode | Decode, filter, scale, and encode video | Software processing or incomplete hardware acceleration |
| Subtitle Burn-In | Render subtitles into every video frame | Full video processing may be required |
Software Video Transcoding Is Usually the Main Cause
A media server transcodes video when the client cannot accept the original combination of codec, profile, resolution, bitrate, container, audio, or subtitles. It may also transcode because the user selected a lower playback quality.
The server must decode the source frames, apply any required filters, resize or convert the image, and encode a new stream quickly enough to stay ahead of playback. A 4K HEVC source converted to lower-resolution H.264 requires substantially more processing than serving the original file.
If all these stages run on general-purpose CPU cores, high utilization can be normal. The meaningful question is whether the transcoder remains faster than playback. A busy CPU with smooth playback is different from a CPU pinned at its limit while the client repeatedly buffers.
The Client Often Decides Whether the CPU Is Needed
The same file can Direct Play on one streaming box and trigger a full transcode in a browser, television app, phone, or older player. Each client supports a different combination of containers, video profiles, bit depths, audio formats, subtitles, and maximum bitrates.
Even when the video codec is supported, an incompatible audio track or subtitle format can change the playback path. A client may accept HEVC video but require TrueHD audio to be converted, or it may require video transcoding when the selected subtitles cannot be rendered locally.
Compare the same file on two clients while keeping the audio track, subtitle selection, and quality setting unchanged. If the high CPU follows one client, focus on that client’s capabilities and settings before replacing server hardware.
Lower Quality Can Increase Server CPU Usage
Choosing a lower quality setting may sound like it should reduce the server workload. In reality, the server usually has to create a new stream when the requested resolution or bitrate differs from the source.
For example, asking for 1080p at 8 Mbps from a 4K high-bitrate file requires decoding, scaling, and re-encoding. Selecting Original quality may allow Direct Play when the client supports the source format and the network can carry its bitrate.
Use Original quality as a diagnostic test on the local network. It is not a universal fix: a client with incompatible codecs, insufficient bandwidth, or unsupported subtitles may still require conversion.
Subtitle Burn-In Can Turn a Light Stream Into a Heavy One
If CPU usage rises only after subtitles are enabled, the selected subtitle track is a strong suspect. Text subtitles such as SRT are often rendered by the client, while PGS and VobSub are image-based formats. ASS and SSA contain text but may include styling and positioning that some clients cannot reproduce.
When the client cannot render the subtitle track, the server may burn it into the picture. That requires decoding the video, compositing the subtitles onto each frame, and encoding a new video stream.
Plex has specifically worked on improving subtitle burn-in performance during hardware transcoding, with results depending on the operating system, GPU type, and whether tone mapping remained in the pipeline. This is why the same subtitle test may produce different CPU usage across servers.
Test the Subtitle Track Separately
Replay the same scene with subtitles disabled. If CPU usage immediately falls and the session returns to Direct Play, the subtitle path—not the source video alone—is causing the extra work.
Next, try an external SRT track, another subtitle language, or a client with wider subtitle support. Also check whether the server reports subtitle burn-in rather than simple subtitle delivery.
Do not assume every subtitle format has the same cost. A styled text track may be easy for one client and require full video processing on another, while an image subtitle from a Blu-ray may be particularly difficult to deliver without burn-in.
A Working GPU Does Not Mean the Whole Pipeline Is Accelerated
It is possible to see GPU activity while the CPU remains high. Hardware acceleration may decode and encode the video while the CPU still handles subtitle rendering, audio conversion, scaling, tone mapping, or another filter.
A community troubleshooting case showed GPU transcoding operating alongside high CPU usage from subtitle burn-in and audio conversion. The case should not be treated as a fixed rule for every current version, but it illustrates why GPU utilization alone is incomplete evidence.
Check both the GPU decode and encode engines, then inspect the transcoder log for software filters. Compare CPU usage with subtitles off, a compatible audio track selected, and tone mapping removed from the test.
Hardware Acceleration May Fall Back to Software
A hardware acceleration option can be enabled in the server interface even when the host driver, device permissions, runtime, or selected codec is not working correctly.
Some source formats may use the GPU successfully while others fall back to the CPU. A GPU might support H.264 and HEVC Main but not the exact bit depth, chroma format, encode target, or tone-mapping path required by a particular file.
Force a known transcode and monitor the server in real time. Confirm that the hardware decoder and encoder are active, inspect the transcoder command, and look for initialization failures or software fallback messages rather than relying only on the enabled checkbox.
Docker Adds a Separate GPU Access Layer
When the media server runs in Docker, detecting the GPU on the host does not prove that the application can use it inside the container. The container needs the device, compatible userspace libraries, the correct runtime, and permission to access the video functions.
For NVIDIA deployments, a useful validation sequence is to confirm the host driver first, verify that Docker recognizes the NVIDIA runtime, check that the required libraries and devices exist inside the container, and observe encoder activity during a forced transcode. A container where nvidia-smi runs can still be missing libraries or capabilities required by the media server.
A practical Docker setup therefore needs to verify the NVIDIA runtime, userspace libraries, device exposure, and encoder activity inside the container. Avoid using privileged mode as a permanent shortcut; expose only the resources the service needs.
Virtual Machines Can Create the Same Failure Pattern
A virtual machine may detect a display adapter without having access to the hardware encode and decode functions required for media transcoding. GPU passthrough, mediated devices, drivers, and guest permissions all affect the result.
Validate the GPU from inside the guest operating system and then from the media-server process. Host-level GPU activity does not prove that the guest application is using the intended engine.
If a native installation uses hardware acceleration but an otherwise identical VM installation uses high CPU, compare device exposure and logs before changing codec settings or re-encoding the library.
HDR Tone Mapping Can Leave Significant Work on the CPU
When HDR media is played on an SDR display or through a client that cannot accept the original HDR stream, the server may need to perform tone mapping in addition to normal transcoding.
The pipeline can include 10-bit decoding, color-space conversion, brightness mapping, scaling, subtitle composition, and encoding. Hardware support for the source codec does not guarantee that every one of those stages can remain on the GPU.
Test the same file on an HDR-capable client, then compare it with an SDR output. If ordinary SDR transcodes are efficient but HDR-to-SDR sessions use high CPU, investigate the tone-mapping method and hardware support rather than treating all 4K media as equivalent.
Audio Conversion Usually Is Not as Heavy as Video Transcoding
TrueHD, DTS, multichannel audio, or an unsupported audio codec may be converted to a format the client can play. The server may also downmix surround sound to stereo.
Audio transcoding consumes processing power, but it is generally lighter than decoding and re-encoding an entire video stream. Remuxing a container also preserves the video stream and normally requires much less computation than video conversion.
If the dashboard reports only audio transcoding while the CPU remains near its limit, check for subtitle processing, background analysis, another active session, or a separate transcoder process. Do not assume the visible audio label explains the complete workload.
Direct Play With High CPU Usually Means Another Task Is Running
Direct Play still requires file reads, authentication, application logic, and network delivery, so CPU usage will not be exactly zero. It should not normally require the heavy video processing associated with a software transcode.
Plex can consume substantial CPU for intro and credit detection, preview thumbnails, voice analysis, commercial detection, media optimization, and download preparation. Some of these jobs invoke the transcoder even when nobody is actively watching media.
Check the operating-system process list rather than only the total CPU graph. Identify whether the current stream’s transcoder, a scheduled analysis process, a library scanner, or an unrelated container is responsible.
Scheduled Analysis Can Look Like Playback Load
A background job may begin around the same time someone starts watching, making it appear that playback itself caused the CPU spike. Maintenance windows often run overnight or shortly after new content is added.
One Unraid discussion traced apparently idle CPU load to scheduled media analysis and later to intro and credit detection. This is a community example rather than proof that every idle-load case has the same cause.
Temporarily pause preview generation, intro detection, credit detection, optimization, and deep media analysis. If CPU usage falls without changing the active stream, move those tasks to a different maintenance window instead of modifying playback settings.
Multiple Streams Multiply Different Types of Work
One Direct Play session mainly adds storage and network demand. One audio transcode adds a smaller conversion task. One software 4K video transcode can consume much more compute than several direct streams.
When another user starts playback, inspect every session individually. Two users do not necessarily create twice the same workload: one may Direct Play while the other burns subtitles into an HDR transcode.
Add test sessions one at a time while watching CPU, GPU, network, disk latency, and transcode speed. This reveals whether the practical limit is software encoding, hardware encoder capacity, storage contention, or aggregate bandwidth.
Live TV Can Require Additional Processing
Live TV may arrive in a codec, resolution, interlaced format, or bitrate that the playback client cannot accept directly. The server may need to deinterlace, convert video, change audio, or create a lower-rate stream.
These operations can make live playback more CPU-intensive than an ordinary movie that Direct Plays. Recording and commercial analysis may also run alongside viewing, adding more server work.
Check the live session’s source codec, deinterlacing status, playback mode, and selected quality separately from the stored-media library. A Live TV problem does not prove that all local files require the same hardware.
Remote Playback Often Forces a New Bitrate
A high-bitrate file may Direct Play over the home LAN but exceed the server’s available internet upload speed. The remote client or server limit then requests a smaller stream.
Reducing bitrate means the server must normally create a new video output. CPU usage can therefore rise during remote playback even when the same client uses little server compute at home.
Compare the source bitrate with sustainable upload capacity and the client’s remote quality setting. If lowering the stream creates a software transcode, correctly configured hardware acceleration or a pre-encoded remote version may reduce CPU demand.
A Short CPU Spike Can Be Normal
Some transcoders work ahead of the playback position to create a buffer. CPU usage may rise sharply at the beginning, fall when enough segments have been produced, and increase again when more output is needed.
A brief peak with smooth playback and stable temperatures does not necessarily require a fix. Sustained maximum usage, falling transcode speed, repeated buffering, or thermal throttling indicates a more meaningful capacity problem.
Observe the workload over several minutes rather than relying on a single CPU screenshot. Record whether the processor remains pinned, whether the transcoder stays ahead, and whether the server clock speed drops as temperature increases.
Do Not Re-Encode the Entire Library First
Converting every file to a broadly supported format can reduce future real-time transcoding, but it requires time, additional storage, and another lossy encoding step for many sources.
It may also fail to address the actual cause if the high CPU comes from subtitle burn-in, HDR tone mapping, remote bitrate limits, background analysis, or broken GPU access inside Docker.
First identify the combinations that repeatedly fail on the clients you actually use. Create optimized copies only for high-frequency problem media, or use a more capable client where that is simpler than maintaining multiple versions of the library.
Use This Troubleshooting Order
- Reproduce the high-CPU session with the same file and client.
- Record whether it is Direct Play, Remux, audio transcode, or video transcode.
- Identify the exact process consuming CPU.
- Record the stated reason for conversion.
- Test Original quality on the local network.
- Disable subtitles and select another audio track.
- Play the same file on another client.
- Monitor GPU decode and encode engines.
- Inspect the transcoder or FFmpeg log for software fallback.
- Verify GPU access from inside Docker or the virtual machine.
- Pause media analysis, preview generation, and optimization jobs.
- Add additional streams one at a time.
- Check temperature and CPU clock speed.
- Upgrade hardware only after the bottleneck is confirmed.
| Symptom | Likely Direction | Next Test |
| CPU rises only during video transcode | Software encoding | Verify GPU decode and encode activity |
| CPU rises only with subtitles | Subtitle burn-in | Disable subtitles or select an SRT track |
| Only HDR content causes high CPU | Tone mapping or 10-bit processing | Test the file on an HDR-capable client |
| GPU is active but CPU remains high | Partial acceleration | Check audio, subtitles, filters, and logs |
| Docker uses CPU while the host sees the GPU | Runtime, libraries, or permissions | Verify hardware access inside the container |
| Direct Play shows high CPU | Background or unrelated process | Inspect scheduled tasks and process names |
| Only remote playback uses high CPU | Bitrate or resolution conversion | Check upload speed and remote quality |
| One stream works but several do not | Concurrent compute limit | Compare playback mode for each session |
| CPU spikes briefly and then falls | Buffer-ahead processing | Confirm playback stays smooth |
| High CPU continues while nobody watches | Analysis, thumbnails, optimization, or downloads | Pause scheduled and background tasks |
Final Takeaway
High CPU during media playback is usually the result of a processing decision, not a diagnosis by itself. Full software video transcoding is the most common cause, but subtitle burn-in, HDR tone mapping, partial hardware acceleration, remote quality limits, and concurrent sessions can create similar load.
Start by identifying the playback mode and the exact process using the CPU. If the session is transcoding, test client compatibility, Original quality, subtitles, audio tracks, and the complete hardware acceleration pipeline. If it is Direct Playing, inspect background analysis and other active tasks.
Upgrade the server only after logs and controlled tests show that required real-time processing exceeds the available compute. Many high-CPU cases can be resolved by changing the playback path, correcting Docker GPU access, scheduling analysis outside viewing hours, or selecting a client that can Direct Play the original media.
FAQ
Why does CPU usage increase when subtitles are enabled?
The client may be unable to render the selected subtitle format. The server then burns the subtitles into every video frame, which requires decoding and re-encoding the video. Test with subtitles disabled or select a supported text-based track.
Why is CPU still high when hardware transcoding is enabled?
The GPU may accelerate only video decoding and encoding while the CPU handles subtitles, audio, tone mapping, scaling, or another filter. Hardware access may also be incomplete inside Docker or a virtual machine.
Does Direct Play use no CPU?
No. Direct Play still requires file access, networking, authentication, and application processing. It should normally use much less CPU than video transcoding, so sustained heavy load should prompt a check for background jobs or another process.
Why does lowering streaming quality increase CPU usage?
A lower resolution or bitrate usually requires the server to create a new video stream. If the original file could Direct Play, selecting a lower quality changes the session into a transcode and increases server processing.
Can media scanning cause high CPU while a movie is playing?
Yes. Preview thumbnail generation, intro or credit detection, optimization, voice analysis, and other background jobs may run at the same time as playback. Check the process list and scheduled-task status before attributing all CPU usage to the active stream.
Support & Tips
More to Read

How to Optimize NAS Storage for Adobe Premiere Pro Editing
Keep shared media on the NAS, Premiere cache on local SSD, and size the network for codec bitrate, active streams, and concurrent editors.

CasaOS App Installation Failed: Logs, DNS & Ports
This guide explains how to troubleshoot CasaOS app installation failures by checking CasaOS logs, Docker logs, DNS resolution, system time, CPU architecture, image compatibility,...

10 Self-Hosted Apps Worth Trying on a Home Server
Explore 10 practical self-hosted apps, including Immich, Jellyfin, Vaultwarden, Nextcloud, Home Assistant, Stirling-PDF, and AdGuard Home.

