Better automatic Movie Version Selection in Plex Apps

According to the support article for Multi-Version Movies, “When a Plex app goes to play the collapsed item, it will automatically request and play the most suitable item by default” for items that contain multiple versions. I have not seen any documentation beyond this, but whatever the apps are doing to select the version to play does not seem immediately logical. This is most obvious for my movies that have both 4k and 1080p versions of (I maintain the 1080p versions to keep a version with the rec. 709 color space for my non-HDR displays.) I have 2 Roku devices that do not support H.265 decoding and are hooked up to 1080p displays. The Plex player on both devices always chooses the the 4k HEVC, even though that means a transcode and scale will be necessary, because the device doesn’t support the codec or resolution. The Plex web app in a Firefox browser on a Windows 10 computer with a 4k display on a network local to the PMS always chooses the 1080p version. Yet, the same Firefox version running on a Windows 10 machine at my workplace with a 1080p display and indirect connection to the PMS chooses the 4k version. Again, requiring scaling to match the display size. As far as transcoding, this would need to be done anyway because of the 2 Mbps limit for indirect connections, but wouldn’t it be smart to choose the lower bitrate source file to start with?

The “Play Version” option obviously works, but if the apps are suppose to be choosing the correct version automatically, why not have that happen in a common sense way, mainly matching codec and resolution capabilities

I started another topic, and after discussion with others in the forum, I closed my thread and copied my post over to here.

TL;DR Plex shouldn’t play 4k content on a 1080p screen when there’s a 1080p version available, even if it’s in another directory.

This feature as is, works about half the time for me.

I’ve tested this with a fire stick, the windows desktop client and the webui in chrome. Each of which is configured to play Maximum quality. I tried to Use recommended settings and that didn’t affect my results.

For testing purposes, I have several TV Series in my library with both 4k and 1080p versions. I also have several Movies with both 4k and 1080p versions. 4k and 1080p versions of each are in separate directories within their respective libraries.

I have read the following article.
https://support.plex.tv/articles/200381043-multi-version-movies/
Although I know my setup does not conform to that 100% because the article says both versions need to be in the same directory. However, Plex still does combine the two versions from different directories into one listing, automatically.

But it does not always play the correct version when playing on a 1080p screen. Quite often i find it’s playing a 4k version, or even worse transcoding from the 4k version to 1080p, when there’s a perfectly good 1080p copy already associated with that listing.

At first I thought it might just be for TV shows, but then i started testing it and found Movies behaved similarly.

Expecting my clients to know how to go in and play the correct version is unreasonable, this should be automatic. I shouldn’t have to seperate my 4k content if i also keep a 1080p copy along side it in the library. Even if it’s in a separate directory.

Thank you all in advance for your time and I hope this is an easily accomplished feature request.

TV Log

Movie Log

Windows Client Logs

That’s more of a workaround than a solution. When playing a series for example, it will autoplay the 4k version after watching the previous episode in 1080p. Forcing you to close the video, go back to the series page, then to the correct season, then to the episode’s listing and choose the correct version for every single episode

These are not created with the Optimize feature.

This is line #1942 in my windows client log

URL: https://1-2-3-4.a2bcd5ae2eae4e5c8d22b41e2e568ae5.plex.direct:32400/library/parts/153/1617335301/file.mkv?X-Plex-Session-Identifier=7diu920oy4wkn7zkwtoen2u2&X-Plex-Product=Plex%20for%20Windows&X-Plex-Version=1.31.1.2262-74fdc6b7&X-Plex-Client-Identifier=qawd5l6gdykdvs3ua6qn9cwl&X-Plex-Platform=windows&X-Plex-Platform-Version=10.0.19042&X-Plex-Sync-Version=2&X-Plex-Features=external-media%2Cindirect-media&X-Plex-Model=standalone&X-Plex-Device-Name=ROG-Gaming-PC&**X-Plex-Device-Screen-Resolution=1280x1519%2C1920x1080**&X-Plex-Client-Profile-Name=Plex%20Desktop&X-Plex-Token=xxxxxxxxxxxxxxxxxxxx&X-Plex-Language=en&Accept-Language=en

To me, X-Plex-Device-Screen-Resolution=1280x1519%2C1920x1080 implies the client is asking for 1080p

From my server logs:

Playing a TV episode. Line 81:

  1. May 05, 2021 03:24:03.308 [0x7f3dd97fa640] Debug — [Transcode] Streaming Resource: Reached Decision id=16386 codes=(MDE=1000,Direct play OK.) media=(id=29102 part=(id=29122 decision=direct play protocol=http streams=(Video=(id=70879 decision= width=3838 height=1606) Audio=(id=70880 decision= channels=0 rate=0) Subtitle=(id=70882 decision=ignore languageCode=eng location=embedded))))

This shows the server deciding to send the 4k copy.

Playing a Movie. Line 36

  1. May 05, 2021 03:19:48.155 [0x7f3dd9ffb640] Debug — [Transcode] Streaming Resource: Reached Decision id=55 codes=(MDE=1000,Direct play OK.) media=(id=153 part=(id=153 decision=direct play protocol=http streams=(Video=(id=390 decision= width=3840 height=2160) Audio=(id=391 decision= channels=0 rate=0))))

After reviewing my logs i posted previously, i noticed i didn’t match up the time stamps. So I’ve created some additional logs and posted them below. This is for a TV series, being played on my Windows client.

This is both the server and client logs combined, the server logs end at line 229 and there is a large gap to seperate them.

At line 1558, you see the request, with X-Plex-Device-Screen-Resolution set to 1080p

May 05, 2021 17:13:54.483 [15832] INFO - [Web] [EmbeddedServerEventManager] Opened server event connection to MYSERVER at wss://1-2-3-4.a2bcd5ae2eae4e5c8d22b41e2e568ae5.plex.direct:32400/:/websockets/notifications?X-Plex-Product=Plex%20for%20Windows&X-Plex-Version=1.31.1.2262-74fdc6b7&X-Plex-Client-Identifier=qawd5l6gdykdvs3ua6qn9cwl&X-Plex-Platform=windows&X-Plex-Platform-Version=10.0.19042&X-Plex-Sync-Version=2&X-Plex-Features=external-media%2Cindirect-media&X-Plex-Model=standalone&X-Plex-Device-Name=My-PC&X-Plex-Device-Screen-Resolution=1920x1017%2C1920x1080&X-Plex-Client-Profile-Name=Plex%20Desktop&X-Plex-Token=xxxxxxxx

Then at line 1603, you’ll see where it decides to send 4k instead.

May 05, 2021 17:14:03.887 [15832] INFO - [Web] [MDE] Starting analysis of 4k (mkv, hevc, eac3, 150, main 10)
May 05, 2021 17:14:03.887 [15832] INFO - [Web] [MDE] Analyzing direct play
May 05, 2021 17:14:03.887 [15832] INFO - [Web] [MDE] Analyzing video direct stream
May 05, 2021 17:14:03.887 [15832] INFO - [Web] [MDE] Analyzing audio direct stream
May 05, 2021 17:14:03.888 [15832] INFO - [Web] [MDE] Analyzing playability
May 05, 2021 17:14:03.888 [15832] INFO - [Web] [MDE] Finished analysis of: 4k (mkv, hevc, eac3, 150, main 10) {
“canPlay”: true,
“canDirectPlay”: true,
“canDirectStreamVideo”: true,
“canDirectStreamAudio”: true,
“bitrate”: 25771,
“videoResolution”: 2560
}
May 05, 2021 17:14:03.888 [15832] INFO - [Web] [MDE] Starting analysis of 1080 (mkv, hevc, ac3, 120, main 10)
May 05, 2021 17:14:03.888 [15832] INFO - [Web] [MDE] Analyzing direct play
May 05, 2021 17:14:03.888 [15832] INFO - [Web] [MDE] Analyzing video direct stream
May 05, 2021 17:14:03.888 [15832] INFO - [Web] [MDE] Analyzing audio direct stream
May 05, 2021 17:14:03.888 [15832] INFO - [Web] [MDE] Analyzing playability
May 05, 2021 17:14:03.888 [15832] INFO - [Web] [MDE] Finished analysis of: 1080 (mkv, hevc, ac3, 120, main 10) {
“canPlay”: true,
“canDirectPlay”: true,
“canDirectStreamVideo”: true,
“canDirectStreamAudio”: true,
“bitrate”: 1093,
“videoResolution”: 1080
}
May 05, 2021 17:14:03.889 [15832] INFO - [Web] [MDE] Selected 4k (mkv, hevc, eac3, 150, main 10) to play: {
“canPlay”: true,
“canDirectPlay”: true,
“canDirectStreamVideo”: true,
“canDirectStreamAudio”: true,
“bitrate”: 25771,
“videoResolution”: 2560
}

After giving this some more thought, I’m unsure if this is the correct place for this. Because this is an existing feature, that isn’t working, shouldn’t it be posted as a bug report?

Sadly, it is a feature request since it is working how the developers intended, albeit not how most think it should work (including me).

It seems to based off of bitrate settings, not resolution or direct play capabilities, causing the illogical choice of which file plays by default. It should be smarter than it is currently, and I hope it improves since I use this functionality more and more with 4k content.