Why does H265 video get transcoded when only audio (EAC3) is incompatible?

Server Version#: 4.77.3
Player Version#: 8.30.2.31202
Logs:
logging.txt (4.0 MB)
Plex Media Server Logs_2022-03-18_19-35-19.zip (3.6 MB)

Hello all,

I’m having a problem I can’t seem to solve.

  • When a movie is H264+EAC3, it transcodes the audio and ‘copies’ the video. So far so good.

  • When a movie is H265+EAC3, it transcodes both video and audio.

  • When a movie is H265+DTS, AC3, AAC it does directplay of both video and audio without problems.

I understand that it’s transcoding the EAC3 audio because my android box can’t decode it. But why is it transcoding the H265 video, when it can play it directly when a compatible audio stream (like aac) is selected? Shouldn’t it behave the same as in the H264+EAC3 case? So copy video and transcode audio?

On my phone, it does work correctly and copies the H265 and transcodes the EAC3.

I’ve seen this topic about it, but it had no solutions unfortunately:

https://www.google.com/url?sa=t&source=web&rct=j&url=https://www.reddit.com/r/PleX/comments/nifkg5/hevc_video_transcodes_when_audio_is_transcoding/&ved=2ahUKEwixkPS168_2AhUlu6QKHZ-TBjIQFnoECC4QAQ&usg=AOvVaw1kgmff_5tRsBph_e-y-9Zs

Edit: I tried to play back the same movie file on the same device. But not with plex app, but with kodi app (streamed via smb so no transcoding by any server). That plays back fine.

Likely going to need your server and client logs for the video causing the issue. They have the reasons why the MDE (Media Decision Engine) decides to transcode.

I attached the logs in the OP. I played the movie ‘Goodfellas’ just before.

If I deciphered the client log correctly, it seems to think the movie has a bitrate of 400 Mbit. And then something about a 200 Mbit limit. Could that be it?

@Istria

Thank you for the logs.

Transcoding is occurring because of :

  1. Player is not HDR capable (MAIN 10). It’s only SDR (Main)
  2. The player does not support EAC3.
  3. The client app is asserting a bandwidth utilization limit.
Mar 18, 2022 19:22:11.780 [0x7f137f913b38] DEBUG - [Transcode] It took 10.000000 ms to retrieve 171 items.
Mar 18, 2022 19:22:11.792 [0x7f137f913b38] DEBUG - [Transcode] It took 10.000000 ms to retrieve 171 items.
Mar 18, 2022 19:22:11.794 [0x7f137f913b38] DEBUG - [Transcode] We're going to try to auto-select a subtitle.
Mar 18, 2022 19:22:11.795 [0x7f137f913b38] DEBUG - [Transcode] Selected a foreign audio track: en
Mar 18, 2022 19:22:11.795 [0x7f137f913b38] DEBUG - [Transcode] Audio Stream: 4580, Subtitle Stream: -1
Mar 18, 2022 19:22:11.802 [0x7f137f913b38] DEBUG - [Transcode] MDE: Selected protocol hls; container: mkv
Mar 18, 2022 19:22:11.802 [0x7f137f913b38] DEBUG - [Transcode] MDE: analyzing media item 1653
Mar 18, 2022 19:22:11.802 [0x7f137f913b38] DEBUG - [Transcode] MDE: Goodfellas (1990): Direct Play is disabled
Mar 18, 2022 19:22:11.802 [0x7f137f913b38] DEBUG - [Transcode] MDE: Goodfellas (1990): media must be transcoded in order to use the hls protocol
Mar 18, 2022 19:22:11.802 [0x7f137f913b38] DEBUG - [Transcode] MDE: Goodfellas (1990): no direct play video profile exists for http/mkv/hevc
Mar 18, 2022 19:22:11.802 [0x7f137f913b38] DEBUG - [Transcode] MDE: Goodfellas (1990): no direct play video profile exists for http/mkv/hevc/eac3
Mar 18, 2022 19:22:11.802 [0x7f137f913b38] DEBUG - [Transcode] MDE: Goodfellas (1990): no direct play video profile exists for http/mkv/hevc/aac
Mar 18, 2022 19:22:11.802 [0x7f137f913b38] DEBUG - [Transcode] MDE: Goodfellas (1990): no direct play video profile exists for http/mkv/hevc/aac
Mar 18, 2022 19:22:11.802 [0x7f137f913b38] DEBUG - [Transcode] Goodfellas - video.profile limitation applies: main 10 != main [list]
Mar 18, 2022 19:22:11.802 [0x7f137f913b38] DEBUG - [Transcode] Goodfellas - video.profile limitation applies: main 10 != main [list]
Mar 18, 2022 19:22:11.802 [0x7f137f913b38] DEBUG - [Transcode] MDE: Goodfellas (1990): no remuxable profile found, so video stream will be transcoded
Mar 18, 2022 19:22:11.802 [0x7f137f913b38] DEBUG - [Transcode] MDE: Cannot direct stream video stream due to profile or setting limitations
Mar 18, 2022 19:22:11.803 [0x7f137f913b38] DEBUG - [Transcode] MDE: Cannot direct stream audio stream due to codec eac3 when profile only allows opus
Mar 18, 2022 19:22:11.803 [0x7f137f913b38] DEBUG - [Transcode] MDE: Goodfellas (1990): selected media 0 / 1653
Mar 18, 2022 19:22:11.803 [0x7f137f913b38] DEBUG - [Transcode] Streaming Resource: Required bandwidth unknown (media requires deep analysis) Changing decision parameters provided by client to fit bandwidth limit of 200000kbps
Mar 18, 2022 19:22:11.803 [0x7f137f913b38] DEBUG - [Transcode] Streaming Resource: Determining preferred transcode encoders through transcode only decision.
Mar 18, 2022 19:22:11.804 [0x7f137f913b38] DEBUG - [Transcode] Streaming Resource: Reducing playback quality for 190476kbps stream bitrate: video resolution to 1920x1080, audio channels to 6, quality to 99
Mar 18, 2022 19:22:11.805 [0x7f137f913b38] DEBUG - [Transcode] MDE: Selected protocol hls; container: mkv
Mar 18, 2022 19:22:11.805 [0x7f137f913b38] DEBUG - [Transcode] MDE: analyzing media item 1653
Mar 18, 2022 19:22:11.805 [0x7f137f913b38] DEBUG - [Transcode] MDE: Goodfellas (1990): Direct Pla

Hi @ChuckPa … I don’t understand this statement.

From my understanding, MAIN10 has nothing to do with HDR, it is 10Bit MAIN profile.

H.265 Main 10 supports 8 or 10 bit samples; it’s required for HDR, but it’s also more efficient and banding resistant when used for SDR. There’s lots of H.265 Main 10 SDR content.

And most H.265/HEVC decoders can do Main 10.

Can you share the media info XML for this?

Main 10 is High Dynamic Range (10 bit)
Main is Standard Dynamic Range (8 bit)

Screen-Extended Main
The Screen-Extended Main profile allows for a bit depth of 8 bits per sample with support for 4:0:0 and 4:2:0 chroma sampling. HEVC decoders that conform to the Screen-Extended Main profile must be capable of decoding bitstreams made with the following profiles: Monochrome, Main, and Screen-Extended Main.[148]

Screen-Extended Main 10
The Screen-Extended Main 10 profile allows for a bit depth of 8 bits to 10 bits per sample with support for 4:0:0 and 4:2:0 chroma sampling. HEVC decoders that conform to the Screen-Extended Main 10 profile must be capable of decoding bitstreams made with the following profiles: Monochrome, Main, Main 10, Screen-Extended Main, and Screen-Extended Main 10.[148]

Ref: High Efficiency Video Coding - Wikipedia

What Plex is saying is that it will not accept Main 10 profile without transcoding to Main – even if it is 8 bit color

1 Like

This I would agree with, however…

This I would not agree with.

Show me please where I’m wrong?

I’ll gladly tell Plex engineering they’ve stuffed the whole transcoder and scanner code if they are wrong.

My understanding is based on :

— You declare a 10 bit-capable profile – When you intend to use it.

Well unless we are confusing what HDR actually means !!

Here is the info for one of my converts… 1.2Mbps 10Bit x265, Level 3.1, SDR - no HDR

image

My query is that MAIN10 is not actually directly tied to HDR.

EDIT:

Indeed… But 10Bit is just the colour depth. It isn’t HDR (ie: HDR10, or HLG, or HDR10+, or DV)

What does mediainfo show?

this part?

ID                                       : 1
Format                                   : HEVC
Format/Info                              : High Efficiency Video Coding
Format profile                           : Main 10@L5.1@High
HDR format                               : SMPTE ST 2086, HDR10 compatible
Codec ID                                 : V_MPEGH/ISO/HEVC

@ChuckPa

image

The HEVC Main 10 Profile uses 10-bit processing internally, which is more efficient (smaller files) and reduces color banding.

It supports video streams with 8-bit pixel color sampling, or with 10-bit pixel color sampling.

“Main 10” isn’t sufficient information to identify that a stream is HDR.

I 100% agree with the request for mediainfo output.

I’m asking the transcoder team now about whether it should or shouldn’t be transcoded and why

Now I will be entirely upfront and admit that I don’t know exactly what video the OP was talking about, and so that video may well have been HDR.

I was just querying this specific statement

I’m 100% sure that Bit depth has no direct bearing on HDR.

I’ve been encoding my files in 10Bit x265 for some years now, and of course 99.9% of them are not HDR, but SDR.

The reason I have been doing this for some time now is because I learnt early on that 10Bit dramatically reduces colour banding, simply because there are more bits (details) to play with.

The logs say this:

video.profile limitation applies: main 10 != main [list]

That strongly implies that specific client can only plain main profile media. The whole HDR vs. SDR thing is a distraction - if the client can’t play main 10, it can’t play main 10.

Sorry if I used “HDR” when I should have said “not Main 10 compatible”.

2 Likes

Lol… No worries… I’m not being pedantic… I was literally thinking to myself… "Hang on, have I misunderstood this all along myself?? " :smiley:

1 Like

I was being pedantic. It’s the only joy I have in my small shriveled heart.

2 Likes

Now that we all realize we messed up…

:beers:

anyone?

:rofl:

4 Likes