Severe quality degradation Streaming via Xbox One App

I’d love to know if you’re aware of an recent update problem, or if there are any sorts of tweaks I need to make to get plex behaving.

I’ve been a happy Plex Pass subscriber for a while and just purchased the lifetime membership. Unfortunately, almost immediately (perhaps coinciding with a sever update?), I seemed to notice image quality problems with my Plex video. I haven’t messed with transcoding (except to enable make my cpu hurt and to ensure that direct play is available.

Watching a movie with any fast action gets significantly pixelated. I don’t think this was the case only a month or so ago. I’m watching via a Macbook Pro server and the Xbox One Plex app.

To confirm that the server should be able to handle it, I loaded up the Plex app via the webbrowser and played the same file through the Chromecast. I have the comparison images below.

Plex Server Using Xbox One Plex Player App

Plex Web Browser Streaming to Chromecast

While you’re playing the movie press the A button to bring up the on screen controls, and click the ... button. Make sure the video quality is set to Original.

Confirmed: Original Quality is selected.
What’s odd is that the next quality available is 1.5 Mbps 480p, not 720p as would be expected.
Then 720 kbps, 320 kbps, etc.

@thekieran Interesting. When you’re playing that movie what does the Plex Web activity page say? Is it direct playing/streaming or is it transcoding?

Transcoding hard. And the CPU utilization jumps to toaster oven. Not just
this movie BTW, confirmed other files behave the same via the Plex Xbox
app, but cool as a cucumber via web app streaming to Chromecast.

Let me know if I can pull some logs to help out. Thanks for looking into
this.

Please post the media XML for one of the affected movies and post server logs (with debugging enabled) for when you start playing this movie.

Super interesting debug logs. Mentions direct play is disabled (below). Now that I’m looking into this, I see a “Direct Play” checkbox under the “web” menu, but not under the server menu.

Aug 25, 2015 13:20:25 [0x106382000] DEBUG - Request: [::ffff:10.0.1.172:57057] GET /library/metadata/4943?checkFiles=1 (5 live) GZIP
Aug 25, 2015 13:20:25 [0x106405000] DEBUG - Request: [::ffff:10.0.1.172:57058] GET /playQueues/83?repeat=0 (6 live) GZIP
Aug 25, 2015 13:20:25 [0x106382000] DEBUG - Auth: We found auth token (xxxxxxxxxxxxxxxxxxxx), enabling token-based authentication.
Aug 25, 2015 13:20:25 [0x106405000] DEBUG - Auth: We found auth token (xxxxxxxxxxxxxxxxxxxx), enabling token-based authentication.
Aug 25, 2015 13:20:25 [0x106382000] DEBUG - Auth: Came in with a super-token, authorization succeeded.
Aug 25, 2015 13:20:25 [0x10eb6a000] DEBUG - Auth: Refreshing tokens inside the token-based authentication filter.
Aug 25, 2015 13:20:25 [0x106405000] DEBUG - Auth: Came in with a super-token, authorization succeeded.
Aug 25, 2015 13:20:25 [0x10eb6a000] DEBUG - HTTP requesting GET https://plex.tv/servers/95563cd20fcfb29db3b6d8ee74b27a44fde054f0/access_tokens.xml?includeProfiles=1&auth_token=xxxxxxxxxxxxxxxxxxxx
Aug 25, 2015 13:20:25 [0x106405000] DEBUG - PlayQueue: total generated: 1, before cursor: 0, after cursor: 0
Aug 25, 2015 13:20:25 [0x106405000] DEBUG - PlayQueue: No need to refresh, active window is operational.
Aug 25, 2015 13:20:25 [0x106405000] DEBUG - We’re going to try to auto-select an audio stream for account 1.
Aug 25, 2015 13:20:25 [0x106405000] DEBUG - Selecting best audio stream for part ID 8705 (autoselect: 1 language: en)
Aug 25, 2015 13:20:25 [0x106405000] DEBUG - We’re going to try to auto-select a subtitle.
Aug 25, 2015 13:20:25 [0x106405000] DEBUG - Selected a foreign audio track.
Aug 25, 2015 13:20:25 [0x106405000] DEBUG - Audio Stream: 27502, Subtitle Stream: -1
Aug 25, 2015 13:20:25 [0x106405000] DEBUG - It took 0.0 sec to serialize a list with 1 elements.
Aug 25, 2015 13:20:25 [0x10ebed000] DEBUG - Completed: [::ffff:10.0.1.172:57058] GET /playQueues/83?repeat=0 (6 live) GZIP 6ms 1963 bytes 200
Aug 25, 2015 13:20:25 [0x106382000] DEBUG - We’re going to try to auto-select an audio stream for account 1.
Aug 25, 2015 13:20:25 [0x106382000] DEBUG - Selecting best audio stream for part ID 8705 (autoselect: 1 language: en)
Aug 25, 2015 13:20:25 [0x106382000] DEBUG - We’re going to try to auto-select a subtitle.
Aug 25, 2015 13:20:25 [0x106382000] DEBUG - Selected a foreign audio track.
Aug 25, 2015 13:20:25 [0x106382000] DEBUG - Audio Stream: 27502, Subtitle Stream: -1
Aug 25, 2015 13:20:25 [0x106382000] DEBUG - It took 0.0 sec to serialize a list with 1 elements.
Aug 25, 2015 13:20:25 [0x10ebed000] DEBUG - Completed: [::ffff:10.0.1.172:57057] GET /library/metadata/4943?checkFiles=1 (6 live) GZIP 25ms 1942 bytes 200
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - Request: [::ffff:10.0.1.172:57057] GET /video/:/transcode/universal/start.m3u8?path=http%3A%2F%2F127.0.0.1%3A32400%2Flibrary%2Fmetadata%2F4943&mediaIndex=0&partIndex=0&protocol=hls&offset=0&fastSeek=1&directPlay=0&directStream=1&subtitleSize=100&audioBoost=100&session=j7x56e9vrn3i&maxVideoBitrate=4000&videoQuality=100&videoResolution=1280x720&subtitles=burn&X-Plex-Client-Identifier=d8zvvtxli81v&X-Plex-Product=Plex+for+Xbox+One&X-Plex-Device=Xbox+One&X-Plex-Platform=Xbox+One&X-Plex-Platform-Version=10.0&X-Plex-Version=1.1.7.0&X-Plex-Device-Name=KXBOX&X-Plex-Client-Capabilities=videoDecoders%3Dh264%7Bprofile%3Ahigh%26resolution%3A1080%7D%3BaudioDecoders%3Daac%7Bchannels%3A6%7D%2Cac3%7Bchannels%3A6%7D%2Ceac3%7Bchannels%3A6%7D&X-Plex-Token=xxxxxxxxxxxxxxxxxxxx&X-Plex-Username=thekieran&Accept-Language=en (6 live) GZIP
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - Auth: We found auth token (xxxxxxxxxxxxxxxxxxxx), enabling token-based authentication.
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - Auth: Came in with a super-token, authorization succeeded.
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - Found session GUID of j7x56e9vrn3i in session start.
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - Using profile Xbox One
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - Downloading document http://127.0.0.1:32400/library/metadata/4943?X-Plex-Token=xxxxxxxxxxxxxxxxxxxx&X-Plex-Client-Capabilities=videoDecoders%3Dh264{profile%3Ahigh%26resolution%3A1080};audioDecoders%3Daac{channels%3A6},ac3{channels%3A6},eac3{channels%3A6}
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - HTTP requesting GET http://127.0.0.1:32400/library/metadata/4943?X-Plex-Token=xxxxxxxxxxxxxxxxxxxx&X-Plex-Client-Capabilities=videoDecoders%3Dh264{profile%3Ahigh%26resolution%3A1080};audioDecoders%3Daac{channels%3A6},ac3{channels%3A6},eac3{channels%3A6}
Aug 25, 2015 13:20:25 [0x106382000] DEBUG - Request: [::ffff:127.0.0.1:50697] GET /library/metadata/4943?X-Plex-Token=xxxxxxxxxxxxxxxxxxxx&X-Plex-Client-Capabilities=videoDecoders%3Dh264{profile%3Ahigh%26resolution%3A1080};audioDecoders%3Daac{channels%3A6},ac3{channels%3A6},eac3{channels%3A6} (7 live)
Aug 25, 2015 13:20:25 [0x106382000] DEBUG - Auth: We found auth token (xxxxxxxxxxxxxxxxxxxx), enabling token-based authentication.
Aug 25, 2015 13:20:25 [0x106382000] DEBUG - Auth: Came in with a super-token, authorization succeeded.
Aug 25, 2015 13:20:25 [0x10eb6a000] DEBUG - MyPlex: Added 12 super-tokens.
Aug 25, 2015 13:20:25 [0x106382000] DEBUG - We’re going to try to auto-select an audio stream for account 1.
Aug 25, 2015 13:20:25 [0x106382000] DEBUG - Selecting best audio stream for part ID 8705 (autoselect: 1 language: en)
Aug 25, 2015 13:20:25 [0x106382000] DEBUG - We’re going to try to auto-select a subtitle.
Aug 25, 2015 13:20:25 [0x106382000] DEBUG - Selected a foreign audio track.
Aug 25, 2015 13:20:25 [0x106382000] DEBUG - Audio Stream: 27502, Subtitle Stream: -1
Aug 25, 2015 13:20:25 [0x106382000] DEBUG - It took 0.0 sec to serialize a list with 1 elements.
Aug 25, 2015 13:20:25 [0x10ec70000] DEBUG - Completed: [::ffff:127.0.0.1:50697] GET /library/metadata/4943 (7 live) 8ms 3593 bytes 200
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - MDE: analyzing media item 7366
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - MDE: redacted (2015): Direct Play is disabled
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - MDE: redacted (2015): media must be transcoded in order to use the hls protocol
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - redacted (2015) - video.width limitation applies: 1920 > 1280
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - redacted (2015) - video.width limitation applies: 1920 > 1280
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - redacted (2015) - video.width limitation applies: 1920 > 1280
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - redacted (2015) - video.width limitation applies: 1920 > 1280
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - MDE: redacted (2015): no remuxable profile found, so video stream will be transcoded
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - redacted (2015) - video.width limitation applies: 1920 > 1280
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - MDE: computed resolution bounding box of 1280x538.
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - Scaled up video bitrate to 2796Kbps based on 1.500000x fudge factor.
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - Scaled maximum bitrate for resolution reduction to 1241Kbps.
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - Clipped max bitrate to 1241Kbps based on client-requested limit
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - MDE: redacted (2015): selected media 0 / 7366
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - Found session GUID of j7x56e9vrn3i in session start.
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - Using session GUID j7x56e9vrn3i for new transcode session.
Aug 25, 2015 13:20:25 [0x106595000] DEBUG - Cleaning directory for session j7x56e9vrn3i ()
Aug 25, 2015 13:20:25 [0x10ec70000] DEBUG - Completed: [::ffff:10.0.1.172:57057] GET /video/:/transcode/universal/start.m3u8?path=http%3A%2F%2F127.0.0.1%3A32400%2Flibrary%2Fmetadata%2F4943&mediaIndex=0&partIndex=0&protocol=hls&offset=0&fastSeek=1&directPlay=0&directStream=1&subtitleSize=100&audioBoost=100&session=j7x56e9vrn3i&maxVideoBitrate=4000&videoQuality=100&videoResolution=1280x720&subtitles=burn (7 live) GZIP 11ms 494 bytes 200 (pipelined: 2)
Aug 25, 2015 13:20:25 [0x106405000] DEBUG - Request: [::ffff:10.0.1.172:57057] GET /video/:/transcode/universal/start.m3u8?path=http%3A%2F%2F127.0.0.1%3A32400%2Flibrary%2Fmetadata%2F4943&mediaIndex=0&partIndex=0&protocol=hls&offset=0&fastSeek=1&directPlay=0&directStream=1&subtitleSize=100&audioBoost=100&session=j7x56e9vrn3i&maxVideoBitrate=4000&videoQuality=100&videoResolution=1280x720&subtitles=burn&X-Plex-Client-Identifier=d8zvvtxli81v&X-Plex-Product=Plex+for+Xbox+One&X-Plex-Device=Xbox+One&X-Plex-Platform=Xbox+One&X-Plex-Platform-Version=10.0&X-Plex-Version=1.1.7.0&X-Plex-Device-Name=KXBOX&X-Plex-Client-Capabilities=videoDecoders%3Dh264%7Bprofile%3Ahigh%26resolution%3A1080%7D%3BaudioDecoders%3Daac%7Bchannels%3A6%7D%2Cac3%7Bchannels%3A6%7D%2Ceac3%7Bchannels%3A6%7D&X-Plex-Token=xxxxxxxxxxxxxxxxxxxx&X-Plex-Username=thekieran&Accept-Language=en (6 live) GZIP
Aug 25, 2015 13:20:25 [0x106405000] DEBUG - Auth: We found auth token (xxxxxxxxxxxxxxxxxxxx), enabling token-based authentication.
Aug 25, 2015 13:20:25 [0x106405000] DEBUG - Auth: Came in with a super-token, authorization succeeded.
Aug 25, 2015 13:20:25 [0x106405000] DEBUG - Found session GUID of j7x56e9vrn3i in session start.
Aug 25, 2015 13:20:25 [0x106405000] DEBUG - Using profile Xbox One

Can you also post the media XML for the file you’re attempting to play above?

wouldn’t copy and paste well, file attached.

@thekieran From your logs I can see you have subtitles enabled? To show subtitles your video will always need to be transcoded. That doesn’t really explain the poor quality of the video though. Could you perhaps send us a sample?

Wow, that was it. I had “Automatically select audio and subtitle tracks” checked. I unselected that and put Subtitle mode into “Manually Selected”. Video cleared up right away.

To be clear, while enabling subtitles should force a transcode you shouldn’t be seeing that massive drop in video quality unless the video resolution was set to something low. If you see the same drop in quality when playing something with subtitles on another Plex client then please do report it with a sample file so we can investigate.