Plex displays wrong colours with Dolby Vision on AppleTV 4k

I assume what they’re saying is Plex can’t integrate Dolby Vision into their own player due to Dolby Vision licensing issues and must rely solely on Apple’s built-in player, which already pays the fees to integrate it, to play DV content. Other plex players, like Sony/LG TVs use the TVs built-in player which likely already license Dv and can already play those files so no issue there.

@Ridley The question remains why DV content doesn’t even seem to work even using the built-in apple player. I thought, at one point, there was some effort to do that and some files seemed to work temporarily, but now nothing seems to work. Also is licensing DV not an option? Obviously Infuse has this working so either they are licensing DV or you’re implying they implemented their own decoder and are possibly opening themselves up to a lawsuit?

1 Like

That’s a very good question. Why is it out of the question to simply license DV?

@Ridley?

1 Like

Considering they’re telling us that’s our responsibility now to either tell Dolby to change their licensing or for us to literally change the law, this last reply seems to be their final take on the subject. I doubt we will see any further action or responses.

Their last update they pushed also seems to be the nail in the coffin; an error is given telling you the color profile is unsupported.

Extremely disappointing.

This has gotten worse actually.
Now video does not play at all, only audio, instead it shows just the spinner with sound. Old and new player alike. Both direct play.

Cool.

I’m thinking there’s a lot of heavy lifting being done by this part in bold:

Does this include DV? I’m guessing no.

Another thing I noticed, this latest response was clearly written by a lawyer; the tone is markedly different from previous responses. Unfortunately this makes it sound more like this is the official response from the company moving forward. Very disappointing.

1 Like

Oh my gosh, so much conspiracy.

This looks like the important bit:

1 Like

I believe that is referring to DV, and matches the terminology from the DV spec docs. Profile 7 is cross-compatible with the UHD BR spec (and HDR10), Profile 8.1 is cross-compatible with HLG. Profile 5 is not cross-compatible with anything else, and it uses a proprietary color space.

4 Likes

Changes have been made on both the client and server to support Direct Stream and Direct Play playback of this content. If playback is still failing on up-to-date client and server versions, we’ll need new logs to determine why.

3 Likes

Thanks!

yeah it still fails. (different file though, same profile, need to retest original file)

I’ll provide logs and a sample file in the coming days.

1 Like

@Ridley so I did some testing.

The original sample file I linked in post #1 outright refuses to play with a an error message that the colourspace is not supported, which is weird because the appletv does/should? Anyhow, I then converted the .ts container into .mp4 with the following ffmpeg cmd:

ffmpeg -i dolbydemo.ts -vcodec copy -acodec copy dolby.mp4

Now the file plays but with the exact same distorted colours as described and “screenshotted” in post #1.

Here are the corresponding log lines, notice it says transcoding, but its actually direct playing, which is normal I suppose?

Apr 18, 2022 19:54:15.863 [0x7fd4a24eab38] DEBUG - Request: [:64418 (WAN)] GET /video/:/transcode/universal/decision?advancedSubtitles=text&audioBoost=100&autoAdjustQuality=0&directPlay=1&directStream=1&directStreamAudio=1&location=wan&mediaBufferSize=20000&partIndex=0&path=%2Flibrary%2Fmetadata%2F89333&protocol=hls&subtitleSize=100&subtitles=auto&videoResolution=4096x2160 (41 live) TLS GZIP Signed-in Token (Skelet0r)
Apr 18, 2022 19:54:15.864 [0x7fd4a24eab38] DEBUG - [Transcode] TranscodeUniversalRequest: using augmented profile tvOS
Apr 18, 2022 19:54:15.864 [0x7fd4a24eab38] DEBUG - [Transcode] Downloading document http://127.0.0.1:32400/library/metadata/89333?includeBandwidths=1&offset=-1&X-Plex-Client-Capabilities=audioDecoders%3dmp3%2caac%2cac3%7bbitrate%3a800000%26channels%3a8%7d&X-Plex-Incomplete-Segments=1&X-Plex-Session-Identifier=B2244045-4EE0-4F32-8023-3670E75C7B70
Apr 18, 2022 19:54:15.864 [0x7fd4adb21b38] DEBUG - Completed: [:64415] 200 GET /library/metadata/89333?asyncAugmentMetadata=0&checkFiles=1&includeChapters=1&includeConcerts=1&includeExternalMedia=1&includeExternalMetadata=1&includeExtras=1&includeGeolocation=1&includeMarkers=1&includeMeta=1&includeOnDeck=1&includePopularLeaves=1&includePreferences=0&includeRelated=0&includeRelatedCount=15&includeReviews=1 (41 live) TLS GZIP 6ms 1215 bytes (pipelined: 1)
Apr 18, 2022 19:54:15.864 [0x7fd4a24eab38] DEBUG - [Transcode] Auth: authenticated user  as Skelet0r
Apr 18, 2022 19:54:15.868 [0x7fd4adafeb38] DEBUG - Auth: authenticated user  as Skelet0r
Apr 18, 2022 19:54:15.868 [0x7fd4a14d7b38] DEBUG - Request: [:64419 (WAN)] GET /library/metadata/89333?asyncAugmentMetadata=0&checkFiles=1&includeChapters=1&includeConcerts=1&includeExternalMedia=1&includeExternalMetadata=1&includeExtras=1&includeGeolocation=1&includeMarkers=1&includeMeta=1&includeOnDeck=1&includePopularLeaves=1&includePreferences=0&includeRelated=0&includeRelatedCount=15&includeReviews=1 (41 live) TLS GZIP Signed-in Token (Skelet0r)
Apr 18, 2022 19:54:15.871 [0x7fd4a24eab38] DEBUG - [Transcode] MDE: Selected protocol http; container: mp4
Apr 18, 2022 19:54:15.871 [0x7fd4a24eab38] DEBUG - [Transcode] MDE: analyzing media item 276814
Apr 18, 2022 19:54:15.871 [0x7fd4a24eab38] DEBUG - [Transcode] MDE: dolby (2022): Direct Playing due to no transcode profile
Apr 18, 2022 19:54:15.871 [0x7fd4a24eab38] DEBUG - [Transcode] MDE: dolby (2022): DirectPlay
Apr 18, 2022 19:54:15.871 [0x7fd4a24eab38] DEBUG - [Transcode] MDE: dolby (2022): selected media 0 / 276814
Apr 18, 2022 19:54:15.872 [0x7fd4a24eab38] DEBUG - [Transcode] Streaming Resource: Reached Decision id=89333 codes=(General=1000,Direct play OK. Direct Play=1000,Direct play OK.) media=(id=276814 part=(id=285477 decision=direct play protocol=http streams=(Video=(id=713516 decision= width=3840 height=2160))))
Apr 18, 2022 19:54:15.872 [0x7fd4adb21b38] DEBUG - Auth: authenticated user  as Skelet0r
Apr 18, 2022 19:54:15.873 [0x7fd4adafeb38] DEBUG - Completed: [:64418] 200 GET /video/:/transcode/universal/decision?advancedSubtitles=text&audioBoost=100&autoAdjustQuality=0&directPlay=1&directStream=1&directStreamAudio=1&location=wan&mediaBufferSize=20000&partIndex=0&path=%2Flibrary%2Fmetadata%2F89333&protocol=hls&subtitleSize=100&subtitles=auto&videoResolution=4096x2160 (41 live) TLS GZIP 9ms 1242 bytes (pipelined: 1)
Apr 18, 2022 19:54:15.873 [0x7fd4a24eab38] DEBUG - Request: [:64417 (WAN)] GET /library/metadata/89333?asyncAugmentMetadata=0&checkFiles=1&includeChapters=1&includeConcerts=1&includeExternalMedia=1&includeExternalMetadata=1&includeExtras=1&includeGeolocation=1&includeMarkers=1&includeMeta=1&includeOnDeck=1&includePopularLeaves=1&includePreferences=0&includeRelated=0&includeRelatedCount=15&includeReviews=1 (41 live) TLS GZIP Signed-in Token (Skelet0r)
Apr 18, 2022 19:54:15.877 [0x7fd4adb21b38] DEBUG - Auth: authenticated user  as Skelet0r
Apr 18, 2022 19:54:15.878 [0x7fd4a14d7b38] DEBUG - Request: [:64416 (WAN)] GET /library/metadata/89333?asyncAugmentMetadata=0&checkFiles=1&includeChapters=1&includeConcerts=1&includeExternalMedia=1&includeExternalMetadata=1&includeExtras=1&includeGeolocation=1&includeMarkers=1&includeMeta=1&includeOnDeck=1&includePopularLeaves=1&includePreferences=0&includeRelated=0&includeRelatedCount=15&includeReviews=1 (41 live) TLS GZIP Signed-in Token (Skelet0r)
Apr 18, 2022 19:54:15.878 [0x7fd4adb21b38] DEBUG - Completed: [:64419] 200 GET /library/metadata/89333?asyncAugmentMetadata=0&checkFiles=1&includeChapters=1&includeConcerts=1&includeExternalMedia=1&includeExternalMetadata=1&includeExtras=1&includeGeolocation=1&includeMarkers=1&includeMeta=1&includeOnDeck=1&includePopularLeaves=1&includePreferences=0&includeRelated=0&includeRelatedCount=15&includeReviews=1 (41 live) TLS GZIP 9ms 1215 bytes (pipelined: 1)
Apr 18, 2022 19:54:15.881 [0x7fd4adb21b38] DEBUG - Completed: [:64417] 200 GET /library/metadata/89333?asyncAugmentMetadata=0&checkFiles=1&includeChapters=1&includeConcerts=1&includeExternalMedia=1&includeExternalMetadata=1&includeExtras=1&includeGeolocation=1&includeMarkers=1&includeMeta=1&includeOnDeck=1&includePopularLeaves=1&includePreferences=0&includeRelated=0&includeRelatedCount=15&includeReviews=1 (41 live) TLS GZIP 8ms 1215 bytes (pipelined: 1)
Apr 18, 2022 19:54:15.885 [0x7fd4adb21b38] DEBUG - Completed: [:64416] 200 GET /library/metadata/89333?asyncAugmentMetadata=0&checkFiles=1&includeChapters=1&includeConcerts=1&includeExternalMedia=1&includeExternalMetadata=1&includeExtras=1&includeGeolocation=1&includeMarkers=1&includeMeta=1&includeOnDeck=1&includePopularLeaves=1&includePreferences=0&includeRelated=0&includeRelatedCount=15&includeReviews=1 (41 live) TLS GZIP 7ms 1215 bytes (pipelined: 1)
Apr 18, 2022 19:54:16.120 [0x7fd4adb21b38] DEBUG - Auth: authenticated user  as Skelet0r
Apr 18, 2022 19:54:16.120 [0x7fd4a24eab38] DEBUG - Request: [:64414 (WAN)] GET /library/metadata/89333?asyncAugmentMetadata=0&checkFiles=1&includeChapters=1&includeConcerts=1&includeExternalMedia=1&includeExternalMetadata=1&includeExtras=1&includeGeolocation=1&includeMarkers=1&includeMeta=1&includeOnDeck=1&includePopularLeaves=1&includePreferences=0&includeRelated=0&includeRelatedCount=15&includeReviews=1 (41 live) TLS GZIP Signed-in Token (Skelet0r)
Apr 18, 2022 19:54:16.126 [0x7fd4adb21b38] DEBUG - Completed: [:64414] 200 GET /library/metadata/89333?asyncAugmentMetadata=0&checkFiles=1&includeChapters=1&includeConcerts=1&includeExternalMedia=1&includeExternalMetadata=1&includeExtras=1&includeGeolocation=1&includeMarkers=1&includeMeta=1&includeOnDeck=1&includePopularLeaves=1&includePreferences=0&includeRelated=0&includeRelatedCount=15&includeReviews=1 (41 live) TLS GZIP 6ms 1215 bytes (pipelined: 5)
Apr 18, 2022 19:54:16.152 [0x7fd4adafeb38] DEBUG - Auth: authenticated user  as Skelet0r
Apr 18, 2022 19:54:16.154 [0x7fd4a14d7b38] DEBUG - Request: [:64414 (WAN)] GET /:/timeline?bufferedTime=0&col=0&context=source%3Ahub.video.recent&duration=131549&key=%2Flibrary%2Fmetadata%2F89333&location=wan&playQueueItemID=936477&playbackTime=9&ratingKey=89333&row=1&state=buffering&time=0 (41 live) TLS GZIP Signed-in Token (Skelet0r)
Apr 18, 2022 19:54:16.154 [0x7fd4a14d7b38] DEBUG - Client [B2244045-4EE0-4F32-8023-3670E75C7B70] reporting timeline state buffering, progress of 0/131549ms for guid=, playbackTime=9ms ratingKey=89333 url=, key=/library/metadata/89333, containerKey=, metadataId=89333, source=
Apr 18, 2022 19:54:16.157 [0x7fd4a14d7b38] DEBUG - [Now] User is Skelet0r (ID: )
Apr 18, 2022 19:54:16.157 [0x7fd4a14d7b38] DEBUG - [Now] Device is tvOS (AppleTV).
Apr 18, 2022 19:54:16.158 [0x7fd4a14d7b38] DEBUG - [Now] Profile is tvOS
Apr 18, 2022 19:54:16.158 [0x7fd4a14d7b38] DEBUG - [Now] Updated play state for /library/metadata/89333.

I tried another file, also DV profile 5, also in an .mp4 container. It starts to play, the audio plays just fine but no video is shown, just the spinner that is usually shown when the video is loading.
I can provide logs for that as well, but that seems like a different problem.

4 Likes

Is resolving this abandoned now? And even more so given that it is probably “all hands to the pump” over the Discover debacle? (Which I actual like and makes the fact that Plex can’t play any of my HDR media on my ATV devices even more annoying!!)

1 Like

More and more shows/movies are showing up in Dolby Vision now which our friends can’t play. I can use Infuse (which I don’t, much prefer Plex’s client) but that is not an option for friends.

An update on whether this can be fixed or not would be good.

1 Like

Yeah it’s pretty absurd at this point how this hasn’t been resolved yet. My library is growing with more DV content and I have been unable to view it on the TvOS/iOS versions of Plex.

I finally caved and subbed in Infuse Pro. Now I am able to play my DV content. Sad that it had to come to this.

1 Like

Yeah this isn’t great. I’m just circling back now after trying to get DV playing back a year ago. Tried again to see if things had been resolved. At least it attempted to play before with funky colours. Now it straight up doesn’t even try. All I get is a vague error message. But hey! Discovery mode, am I right?!

hi @Ridley .

I have tried playing a file on my Apple TV (where it doesnt play), on an android box (Mi Box) and my computer (Plex media player). On my Apple TV the file just doesnt play. On the android box and my computer blue is green and there is a very heavy pink hue.

Please note that i have HDR Tone Mapping enabled and I always direct play. Here is the log file. Can you identify the problem?

Plex Media Server Logs_2022-04-30_16-20-02.zip (3.5 MB)

Is there anything more you need from me @Ridley, or is this enough to get things sorted?

This is not actionable. Please provide more detail on the failure mode you are encountering and attach a sample file, along with server and client logs.

As mentioned previously, DoVi profile-5 content is not supported on devices that don’t have platform-provided decoders, and will not be supported unless and until a change in the licensing situation occurs. Future versions of the relevant apps will automatically select a supported version of the media if available, or show an error if not, rather than displaying distorted colors.

As mentioned previously, I need logs from both the client and server, in addition to a sample file. The logs you did provide are from a test with a remux I would expect was performed incorrectly (I expect you didn’t remux the DoVi metadata correctly; current ffmpeg master requires passing -strict -1 for that, older versions don’t support it at all, and I can’t tell what version of ffmpeg you used without seeing the output).

As a side-note, there are some logging improvements starting in PMS 1.26.0 that make these kinds of issues substantially easier to diagnose, so please make sure you’re on that version or newer when testing and gathering logs.

1 Like

The sample file is included in the original post. I will post some client logs. I don’t know about the remux, the command I used was posted but it did play properly on the Sony app, iirc.
Is there a way to privately upload logs? It’s a pain to sanitise the logs to not spread out ip/username of me and my users to the general public.

ffmpeg version is:

ffmpeg 7:4.1.8-0+deb10u1

I am also not an expert in these kind of things, you guys are and I am spending my free time to help improve your commercial product which makes me wonder, do you guys not have an aTV to test this out, the file was provided in the first post.
This issue is a year old and starts to get a little frustrating.

The atv does support DV profile 5.

1 Like

You can DM them to me.

Well, the Apple client devs tell me that this worked for them, so I need the logs and sample files to figure out what’s different about the cases that aren’t working for y’all.

That was in reply to a different user who was asking about an Android device and a PC.