DV files hang the entire app and I need to exit out via the main Xbox button the Controller, choose Plex, manage, close.
Every DV file, every time.
they play just fine on roku and Android TV.
Server Version#:latest
Player Version#:latest
DV files hang the entire app and I need to exit out via the main Xbox button the Controller, choose Plex, manage, close.
Every DV file, every time.
they play just fine on roku and Android TV.
Server Version#:latest
Player Version#:latest
Probably depends on the DV profile or local network speed. Xbox does not support DV discs, so it does not support DV profile 7. DV profile 8 should fall back to HDR (but wonāt playback in DV), I have several files that do that. I do not have any profile 5 files, which is the streaming app profile. Itās not a plex issue, the hardware needs to support it.
My TV supports it, my receiver supports it, and the Xbox supports it - and since I mentioned they play fine on other devices, we can deduce my network is fine (but to be clear, Iām running gig ethernet throughout the house)
So, what remains is that if there is a DV profile that is unsupported on Xbox, then the Plex Xbox profile needs to deny it, and transcode to a supported streaming file typeā¦. not just completely black screen and hang.
Do you have Dolby Vision enabled on the xbox TV menu??
Yes. Xbox games play in Dolby Vision mode just fine. (For example, No manās sky).
I donāt have much to add other than Iāve been experiencing the same with DoVi videos. What I do as a workaround is set it to play at a lower quality setting so it forces a transcode instead of the direct play, and it will play without issue, but that ends up affecting picture quality (and sometimes the colors) of course.
Iām also on a Xbox Series X, and it is not software version dependent as Iāve been chasing this for at least a year now. My server is on Windows running 1.42.1.10060 right now but Iāll have it update to 1.42.2.10156 tonight, but it is not going to help either. Like OP it is only my Xbox having issues.
Are we the only two people with issues playing videos on xbox? how can I narrow this down? Iāll build a tdarr filter and rerun my files to nuke whatever profile is bad, butā¦. how do I figure it out?
Nope youāre not alone, seems like certains video with hevc main 10 make the xbox app completely frozen. I created a thread also on this problem but iāve never had response from plexā¦
how did you figure out the extradata not empty⦠thing?
Lot of tests : (i used AI to summarize this)
The investigation began because I was comparing two HEVC Main 10 files: one that caused the Xbox Plex app to crash (sample file in my thread) and another one that played perfectly (in hevc main 10 too). Since both files used the exact same codec and settings (HEVC Main 10), I knew the difference had to be a subtle structural error within the file container, which is why I began digging with ffprobe and the binary tool xxd.
I used a combination of command-line tools to target the video streamās private data headers, known as the Extradata.
The core problem wasnāt visible in standard video properties; it was hidden in the private structural data used by the decoder.
I first used the command-line tool ffprobe to examine the Extradata Size of the video stream. This value tells me how many bytes are reserved for the codecās configuration (VPS, SPS, PPS for HEVC), which is essential for hardware decoders to start working.
The specific command I used to retrieve this value was:
ffprobe -v error -select_streams v:0 -show_entries stream=extradata_size -of default=noprint_wrappers=1:nokey=0 input_file.mkv
| File Status | Extradata Size | Interpretation |
|---|---|---|
| Working Files (OK) | 111 or 2470 bytes | Normal size, indicating the presence of configuration data. |
| Crashing Files (KO) | Exactly 23 bytes | Abnormal size, indicating that the essential configuration data is missing or truncated. |
xxd) and Output ExamplesI then used the hexadecimal dump tool xxd to inspect the raw file headers, looking at the Extradata area (around offset 0x160) to get the binary proof:
| File Status | Extradata Size | Sample xxd Output (Critical Area) | Interpretation |
|---|---|---|---|
| Working (OK) | 2470 bytes | 00000160: 4d50 4547 482f 4953 4f2f 4845 5643 8381 V_MPEGH/ISO/HEVC |
The header is correct, followed by dense, valid configuration bytes (VPS/SPS/PPS). |
| Crashing (KO) | 23 bytes | 00000160: 0000 0000 0000 0000 0000 0000 0000 0000 ⦠|
The critical configuration area is filled with zero bytes (00), meaning the essential configuration data is physically missing from the file. |
When the Xbox hardware decoder attempted to initialize using these 23 bytes of missing/zeroed data, the process failed critically, leading to the application crash.
My initial logical fix (simple remux using mkvmerge) failed because the HEVC stream itself was fundamentally corrupted. The defect wasnāt just a container problem.
The definitive solution required a full video re-encode (transcoding) using ffmpeg.
The command that solved the issue was:
ffmpeg -i "input_file.mkv" -c:v hevc -c:a copy -c:s copy "output_fixed.mkv"
The -c:v hevc flag forces FFmpeg to decompress the old, faulty video stream and immediately re-encode it. This process creates a brand new, structurally perfect HEVC stream which automatically generates a correct and complete Extradata, resolving the crash.
This re-encoding is a workaround for a specific file defect caused by a faulty initial encoding/muxing process.
The crash only occurs on the Xbox, while other devices like PS5, Smart TVs, Android/Apple TV, etc., handle the playback without issue. I cannot definitively say why the Xbox is unique in this failure, but it strongly suggests that:
The Xboxās hardware decoder is strictly configured to use the Extradata header and does not fall back to scanning the video stream for configuration data when the header is missing.
The software stacks on other devices are more robust and can compensate for the missing header information in the container, thus avoiding a critical failure.
Bonus Script: Automated Corrupt File Checker
# NOTE:
# Files flagged by this script are not necessarily corrupted MKV containers.
# They have an unusually small HEVC extradata size (⤠40 bytes), which often means
# the VPS/SPS/PPS headers required for hardware decoders (like the Xbox Plex app)
# are missing or incomplete. Such files may crash or freeze
find . -type f -iname "*.mkv" -print0 | while IFS= read -r -d $'\0' file; do
# Retrieve the Extradata size for the first video stream
extradata_size=$(ffprobe -v error -select_streams v:0 -show_entries stream=extradata_size -of default=noprint_wrappers=1:nokey=1 "$file" 2>/dev/null)
# Check if the size is numeric and if it is less than or equal to 50
if [[ "$extradata_size" =~ ^[0-9]+$ ]] && (( extradata_size <= 40 )); then
echo "šØ [CORRUPTED] Extradata Size: ${extradata_size} bytes -> ${file}"
else
# Optional: Display OK files for a complete check
# echo "ā
[OK] Extradata Size: ${extradata_size} bytes -> ${file}"
:
fi
done
@ChuckPa @Chattykinson @Atomatth @McWanke : I believe Iāve provided all the technical details necessary to diagnose this specific issue. Please, I need your expertise to understand and correct the underlying problem.
Thank you for the deep dive @raiiyzen77 . Iāll copy it over to a report
I just chatted with Chris.
He was aware of the problem.
Heās already completely reworked DV support.
He recommends trying PMS 1.43.0
PS: Please remember, Plex is not licensed to transcode Dolby Vision content. We can, at most, DROP DV metadata from transcoded video streams.
I had the Xbox player completely freeze up last night again. Iām attaching the logs from a clean reproduction of the issue I did this morning.
I cannot try 1.43 because it is only available in beta for Plex Pass, Iām on 1.42.
deleted log(494.2 KB)
Thatās unfortunate.
Have you considered getting a PlexPass for just one month?
What do I need to transcode? AFAIK my whole pipeline supports all these features and it should Direct Play - the TV, Xbox, Receiver. The only limitations are for Atmos getting downgraded to 6 channel and audio remuxing doesnt appear to be taxing the system from what Iāve seen.
I know xbox is really restrictive.
I canāt otherwise speak to using it / what it can do.
Your logs are only INFO mode. I canāt see what really happened.
You say DirectPlay but DEBUG logs will tell us what happened and why
Would you mind recreating and then attaching the DEBUG mode server logs so I can see whatās happening?
I set debug, stopped plex, started plex, recreated issue, turned off debug.
Iāll try again, but worry Iāll be hitting the definition of madness by doing so.
Madness?
Youād be among friends.
![]()
Ok, the debug log thing was my fault, had previously done this to enable logging:
Settings ā Plex Web ā Debug ā Debug Level ā From the dropdown, choose āenabledā ā Choose Save Settings
But, I found that was wrong and did this instead this time:
Settings ā General ā Check " Enable Plex Media Server debug logging " ā Choose Save Settings
Then, I followed this article to enable Xbox logging to my server:
https://support.plex.tv/articles/206239048-xbox-one-logs/
⦠which told me to read this article:
https://support.plex.tv/articles/200250417-plex-media-server-log-files/
⦠which told me to read this article:
https://support.plex.tv/articles/201643703-reporting-issues-with-plex-media-server/
Those documents are convoluted, but I think I got there in the end. Here are the attached logs now.
Thanks for that log.
It perfectly shows what I was hoping to see.
The file you gave it was deemed DirectPlay
Nov 11, 2025 13:27:07.849 [23161822841656] INFO - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] [MDE] Application decision, directPlay: true, directStreamVideo: true, directStreamAudio: true
Nov 11, 2025 13:27:07.849 [23161822841656] INFO - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] videoStream: {
"id": 120513,
"streamType": 1,
"default": true,
"codec": "hevc",
"index": 0,
"bitrate": 14910,
"DOVIBLCompatID": 1,
"DOVIBLPresent": true,
"DOVIELPresent": false,
"DOVILevel": 6,
"DOVIPresent": true,
"DOVIProfile": 8,
"DOVIRPUPresent": true,
"DOVIVersion": "1.0",
"bitDepth": 10,
"chromaLocation": "topleft",
"chromaSubsampling": "4:2:0",
"codedHeight": 2160,
"codedWidth": 3840,
"colorPrimaries": "bt2020",
"colorRange": "tv",
"colorSpace": "bt2020nc",
"colorTrc": "smpte2084",
"frameRate": 23.976,
"height": 2160,
"level": 153,
"profile": "main 10",
"refFrames": 1,
"width": 3840,
"displayTitle": "4K DoVi/HDR10 (HEVC Main 10)",
"extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)"
}
Nov 11, 2025 13:27:07.849 [23161822841656] INFO - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] audioStream: {
"id": 120514,
"streamType": 2,
"selected": true,
"codec": "eac3",
"index": 1,
"channels": 6,
"bitrate": 253,
"language": "English",
"languageTag": "en",
"languageCode": "eng",
"audioChannelLayout": "5.1(side)",
"samplingRate": 48000,
"displayTitle": "English (EAC3 5.1)",
"extendedDisplayTitle": "English (EAC3 5.1)"
}
Nov 11, 2025 13:27:07.849 [23161822841656] INFO - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] subtitleStream: none
Nov 11, 2025 13:27:07.849 [23161822841656] INFO - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] [MDE] Server decision, directPlay: true, directStreamVideo: true, directStreamAudio: true
Nov 11, 2025 13:27:07.849 [23161822841656] INFO - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] reason: Direct play OK.
Nov 11, 2025 13:27:07.849 [23161822841656] DEBUG - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] [PlaybackSessionController] Setting up player for playback
Nov 11, 2025 13:27:07.849 [23161822841656] DEBUG - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] [PlaybackSessionController] Creating player
Nov 11, 2025 13:27:07.849 [23161822841656] DEBUG - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] [PlaybackSessionController] Created player
Nov 11, 2025 13:27:07.849 [23161822841656] DEBUG - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] [PlaybackSessionController] Set player
Nov 11, 2025 13:27:07.849 [23161822841656] INFO - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] [Xbox] setDisplayMode: Setting new display mode
Nov 11, 2025 13:27:07.849 [23161822841656] INFO - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] [Xbox] Resolution: 3840x2160
Nov 11, 2025 13:27:07.849 [23161822841656] INFO - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] [Xbox] Refresh Rate: 23.976023976023977
Nov 11, 2025 13:27:07.849 [23161822841656] INFO - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] [Xbox] Bit Depth: 30
Nov 11, 2025 13:27:07.849 [23161822841656] INFO - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] [Xbox] HDR enabled: true
Nov 11, 2025 13:27:07.849 [23161822841656] INFO - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] [Xbox] Dolby Vision enabled: false
Nov 11, 2025 13:27:07.849 [23161822841656] DEBUG - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] [PlaybackSessionController] Checking for Ad
Nov 11, 2025 13:27:07.849 [23161822841656] DEBUG - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] [PlaybackSessionController] Finished checking for Ad
Nov 11, 2025 13:27:07.849 [23161822841656] INFO - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] [PlaybackSessionController] playback state changed to: buffering
Nov 11, 2025 13:27:07.849 [23161822841656] DEBUG - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] [PlaybackSessionController] Opening playback
Nov 11, 2025 13:27:07.849 [23161822841656] INFO - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] [Xbox] setDisplayMode: New display mode set
Nov 11, 2025 13:27:07.849 [23161822841656] WARN - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] Could not open subtitle connection: no playable subtitles found!
Nov 11, 2025 13:27:07.849 [23161822841656] INFO - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] [PlaybackSessionController] playback state changed to: playing
Nov 11, 2025 13:27:07.849 [23161822841656] INFO - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] Refreshing playqueue, current item: Agent Billy Pace
Nov 11, 2025 13:27:07.849 [23161822841656] INFO - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] [PlaybackSessionController] playback state changed to: buffering
Nov 11, 2025 13:27:07.849 [23161822841656] INFO - [Req#1f1] [Plex for Xbox] [jeradc:gsevedxu1mk9h23hc62uycqq] Refreshed/modified playqueue, current item: 118367
Near the bottom, you see ābufferingā. This is the file being sent to the xbox so it can fill its queue and start playback.
Iām going to take your logs and add it to the issue submitted by BigWheel.