FWIW, I’ve slimmed down the custom profile:
<?xml version="1.0" encoding="utf-8"?>
<Client name="Custom_NoTranscoding">
<DirectPlayProfiles>
<VideoProfile container="mkv,mp4" codec="mpeg1video,mpeg2video,mpeg4,h264,vp8,vp9,Hevc,h265" audioCodec="eac3,ac3,dca,aac,mp2,mp3,pcm" subtitleFormat="srt" />
<MusicProfile container="mp3" codec="mp2,mp3" />
<PhotoProfile container="jpeg,jpg,gif,webp,png" />
<SubtitleProfile container="srt" codec="srt" />
</DirectPlayProfiles>
</Client>
Don’t forget to restart the Plex server process after editing/creating this file.
This basically forces DirectPlay and shuts off transcoding for all the listed media types. It also seems to fix the dreaded 10-seconds-per-image photo resizing problem! Plex can now serve .jpg photos circa 1999 to my Pixel 3!
Plex might not be happy with this solution - they are very proud of their detection and transcoding, even though it is so often wrong - but for those of us with low-power servers, we have been begging for this for years. I carefully encode and curate all my media, and if it can’t play directly I’ve done something wrong. I don’t want Plex to try and transcode for me, and I don’t blame them if my device can’t handle something.
Most of the reasons given by Plex for not allowing transcoding to be disabled from the UI revolve around obscure or very high-end media types on very low-end devices. That seems…nuts. If you’re dabbling in obscure high-end codecs you know what you’re doing and shouldn’t expect things to run on your 5-year-old knock-off device running Android 4.0. Most of us are dealing with mp4/mkv (h.264+acc), mp3, and jpg. Most of our clients are modern phone and web browsers. So glad to finally have a way to force DirectPlay in all these cases!