Troubleshooting Transcoding Issues with Plex - iOS Devices, Remote Streaming and Options
I often use an iPad to view content from Plex. Over the last month, I noticed an issue whereby the Plex Media Server CPU was running at 100% each time I viewed content on my iPad (and only on my iPad). In the past whenever I watched content on Plex, I would see the server CPU spike, then subside. But lately it has been running 100% non-stop when watching content.
Challenge - 100% CPU Usage due to transcoding on the fly
I knew of hardware transcoding, but since I run Plex on a virtual machine, it's always software based. I also realized that since it was only my iPad having this issue, I must have tinkered with some settings within the app.
Plex Media Server's Dashboard showing actively playing stream from iPad along with server's bandwidth usage and 100% CPU utilization due to software-based transcoding
In above image, notice the Plex for iOS Video and Audio streams are both transcoding on the fly. This is the reason for 100% server-side CPU usage and staggered, buffering playback on the iPad. Took me a few times of trial and error with settings on the server and on iPad to learn the proper way to set things up.
Solution - Remote Streaming Options within Plex Player app
Within Plex, the option exists to adjust video quality to network. My original setting on iOS devices was always Remote Streaming at 3 Mbps, 720p HD. I recall doing this due to being on travel and viewing my Plex content from WiFi hotspot.
Within every Plex app are options for Quality based on network connectivity.
In order to avoid software-based transcoding, and 100% CPU usage, set Remote Streaming default quality to the highest (4K or 1080p HD) and enable Play Smaller Videos at Original Quality. With both these settings in place, Direct Stream will occur vs transcoding - less CPU but more bandwidth usage.
End goal into have Direct Stream for all video content.
Notice CPU usage without transcoding on the fly drops to a few percent.