Jump to content

Question about playback, when quality selection is disabled


Recommended Posts

Posted

Some of my users keep being able to transcode certain entries, but "quality selection" has been disabled for their account

image.png.9b9fd7176ca254ff788fa818301e557b.png

 

I can't find anything regarding "why" transcoding it happening, other than this request

2025-11-19 16:39:25.998 Info MediaInfoService-0HNH72VKIT8M7:0000003F: http/2 POST https://host8/emby/Items/8131/PlaybackInfo?UserId=9e3ccbb472224bafa8ea36423dfaff6d&StartTimeTicks=0&IsPlayback=false&AutoOpenLiveStream=false&MaxStreamingBitrate=2000000&X-Emby-Client=Emby Web&X-Emby-Device-Name=Google Chrome Windows&X-Emby-Device-Id=52a84760-3103-4d70-ba75-0e3a80218b5b&X-Emby-Client-Version=4.9.2.15&X-Emby-Token=x_secret6_x&X-Emby-Language=nl&reqformat=json. Source Ip: host38, UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
2025-11-19 16:39:26.057 Info App: User policy for XXXXXXXX. EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: False EnableAudioPlaybackTranscoding: True

Does anyone have any idea what's going on with these users? Is it the "EnablePlaybackRemuxing" causing this, if so; why? 

GrimReaper
Posted

Well, that window surely looks interesting, with both Video and Audio Direct Playing and item being transcoded 6->2 Mbps. Talk about mind-bending. "There is no spoon..."

Posted
9 minutes ago, brothom said:

but "quality selection" has been disabled for their account

Exactly how?

visproduction
Posted

Guessing the text alert notice is just worded incorrectly.  Maybe when transcoding happens, it mostly is for that reason, but if perhaps the server, hardware, cables, TV App  combination cannot handle a direct play throughput, then transcoding is done, not for quality, but for the ability to stream a large media with these audio / video codecs, in real time through the connection.  Perhaps the alert would be more accurate to state "Reduced bitrate due to quality or other reasons."

It is my understanding that cables, browsers, TV Apps, Wifi, of course, if used can all fail to send media content with high bitrates or non-compatible codecs.  I think also what is confusing is that the end player / TV is suppose to be able to play everything, but there is some step along the way that does not support some issue, with the media codecs or even sometimes the media inlcudes 30 subtitles which has side effects.  Just having enough bandwidth does not fix some step not accepting the codec.

If logs of the incident were included, someone could pin down more exactly what's happening.  I never have this problem, but I also never have media with this combined codec and bitrates.  Some people's setups can handle higher bit rate media.  It seems to be tricky to get direct to work for everyone, all the time, for h.265 .mkv media.

Posted (edited)
36 minutes ago, brothom said:

Is it the "EnablePlaybackRemuxing" causing this, if so; why? 

Yes. Notice the green line is very short for the amount they have played back, yet the red line has completed entirely. This is because a remux is much faster, doesn't need to throttle, and doesn't really increase the size of the file by very much. It isn't technically transcoding. The streams are being played directly. Only the container has been changed.

It says "Reducing bitrate" for the transcode reason which is probably correct that it was going to do that. Then it realized the restrictions on the user after giving that message. That it cannot transcode and the best it can do is the remux. You are correct in your understanding. The message doesn't understand yet that it will be restricted from transcoding on top of their bitrate quality selection. It just shows that their bitrate selection on the app is lower than the bitrate of the media item and gives that message. When really it is _both_ the bitrate _and_ the fact they cannot transcode. Which means their lower bitrate was not taken into account since the restriction to not transcode takes priority. The message while correct isn't applied in this instance.

Edited by speechles
  • Like 1
Happy2Play
Posted

I would assume corresponding logs are need as images never tell the whole story.

 

  • Agree 1
Happy2Play
Posted

I think once you start changing user playback options the server will not report proper playback either so there may not be any corresponding logs.

But a dev would have to confirm as I thought something like this was reported before when disabling transcoding on user settings.

Happy2Play
Posted

But testing my theory I did get a remux log.  Stream info is wrong.

image.png.dc029b5e04e370bb2d178f6755aca3db.png

image.thumb.png.bbebba81dbe99319bbb538ba22cdd172.png

&TranscodeReasons=ContainerBitrateExceedsLimit

>>>>>>  User policy for Media
        Allow Playback Remuxing: True
        Allow Transcoding to Reduce Quality: True
        Allow Video Playback Transcoding: False
        Allow Audio Playback Transcoding: True



08:55:25.317 Stream mapping:
08:55:25.317   Stream #0:0 -> #0:0 (copy)
08:55:25.317   Stream #0:2 -> #0:1 (dts (dca) -> mp3 (libmp3lame))

 

Happy2Play
Posted (edited)

Sorry a better representation of OP playback.  You will have a Directstream log

image.png.2f5a45b5d5233283aadb7f814934737e.png

image.png.c4a485d1055206cc66cb47826cfdc2ad.png

image.thumb.png.ecb642f8a5006f4af3a7904f2bff75b9.png

 

&TranscodeReasons=ContainerBitrateExceedsLimit

>>>>>>  User policy for Media
        Allow Playback Remuxing: True
        Allow Transcoding to Reduce Quality: True
        Allow Video Playback Transcoding: False
        Allow Audio Playback Transcoding: True

09:02:56.988 Stream mapping:
09:02:56.988   Stream #0:0 -> #0:0 (copy)
09:02:56.988   Stream #0:1 -> #0:1 (copy)

But overall issue is how Stream info is presented.

So the server sort of presents the limited quality issue even though it is not limiting it.

&VideoBitrate=3808002&AudioBitrate=192000

 

Edited by Happy2Play
  • Agree 1
horstepipe
Posted

I am seeing that or similar all the time, but server does not transcode definitely - I’d notice that from cpu usage - this is just a UI bug, was addressed in some other thread before.

BR

  • Agree 1
Posted
3 minutes ago, Happy2Play said:

Sorry a better representation of OP playback.  You will have a Directstream log

image.png.2f5a45b5d5233283aadb7f814934737e.png

image.png.c4a485d1055206cc66cb47826cfdc2ad.png

image.thumb.png.ecb642f8a5006f4af3a7904f2bff75b9.png

 

&TranscodeReasons=ContainerBitrateExceedsLimit

>>>>>>  User policy for Media
        Allow Playback Remuxing: True
        Allow Transcoding to Reduce Quality: True
        Allow Video Playback Transcoding: False
        Allow Audio Playback Transcoding: True

09:02:56.988 Stream mapping:
09:02:56.988   Stream #0:0 -> #0:0 (copy)
09:02:56.988   Stream #0:1 -> #0:1 (copy)

But overall issue is how Stream info is presented.

So the server sort of presents the limited quality issue even though it is not limiting it.

&VideoBitrate=3808002&AudioBitrate=192000

 

This looks a lot like my case. I'm not really sure "how" this user manages this, with the same account setting (as my own): image.png.fda3010258eb7feea1d78ddb5f083db5.png

The reason I leave "allow chaning of container formats" enabled is due to this issue, otherwise some of my user won't be able to view specific containers but those aren't my concern since that isn't all that intensive.

My account can also view this piece of media without any transcoding/remuxing and we're both on Windows 10 with latest updates. The device supports 4K and this issue only occurred as of late (not sure if it also happened because the 4.9 update).

 

1 minute ago, horstepipe said:

I am seeing that or similar all the time, but server does not transcode definitely - I’d notice that from cpu usage - this is just a UI bug, was addressed in some other thread before.

BR

Maybe your server is more powerful than mine. During the remux the entire server becomes unresponsive because it keeps at it in one go until the entire file is processed. 

My server is absolutely awful and when this occurs other sessions freeze until this single session is done or that current fragment has been returned.

Happy2Play
Posted

You should have a corresponding ffmpeg-directstream log for that playback session. 

 

But in the end, there is an issue in actual server reporting when one disables user playback options.  As it still reading default playback limitations then ignoring them in the code process.  So at no time was there an enforced 4Mbps limit on the file being played as it was stream copied.

Posted
10 minutes ago, Happy2Play said:

Sorry a better representation of OP playback.  You will have a Directstream log

I think you're right and I think it might have to do with embedded subtitles because this one specific log for this entry is full of this stuff:


App: Emby Web 4.9.2.15
Google Chrome Windows
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36

https://host8/emby/videos/8131/main.m3u8?DeviceId=52a84760-3103-4d70-ba75-0e3a80218b5b&MediaSourceId=mediasource_8131&PlaySessionId=5332d6e739ea48f29d354bfd42a06ec7&api_key=x_secret6_x&VideoCodec=hevc,h264,av1&AudioCodec=mp3,aac&VideoBitrate=1680000&AudioBitrate=320000&MaxWidth=1280&AudioStreamIndex=1&SubtitleStreamIndex=24&SubtitleMethod=Hls&TranscodingMaxAudioChannels=2&SegmentContainer=ts&MinSegments=1&BreakOnNonKeyFrames=False&SubtitleStreamIndexes=2,3,4,5,6,24&ManifestSubtitles=vtt&h264-profile=high,main,baseline,constrainedbaseline,high10&h264-level=62&hevc-codectag=hvc1,hev1,hevc,hdmv&TranscodeReasons=ContainerBitrateExceedsLimit

https://host8/emby/videos/8131/hls1/main/0.ts?PlaySessionId=5332d6e739ea48f29d354bfd42a06ec7
...
16:39:32.160 Output #2, segment, to 'J:\transcoding\transcoding-temp\645AD8\645AD8_s3_%d.vtt':
16:39:32.160   Metadata:
16:39:32.160     encoder         : Lavf59.27.100
16:39:32.160   Stream #2:0: Subtitle: webvtt (hearing impaired)
16:39:32.160     Metadata:
16:39:32.160       encoder         : Lavc59.37.100 webvtt
16:39:32.177 subtitle_kickoff: resend - pts: 10262
16:39:32.177 subtitle_kickoff: call subtitle_resend_current 10272 frame->format: 3
16:39:32.177 [segment @ 000001c18e5414c0] Opening 'J:\transcoding\transcoding-temp\645AD8\645AD8.m3u8.tmp' for writing
16:39:32.179 SegmentComplete=video:0 Index=0 Start=0.000000 End=10.303000 Duration=10.303000 offset_pts=0 start_pts=0 Frames=246 filename=645AD8_0.ts
16:39:32.179 [segment @ 000001c18e5414c0] Opening 'J:\transcoding\transcoding-temp\645AD8\645AD8_1.ts.tmp' for writing
16:39:32.219 subtitle_kickoff: resend - pts: 15308
16:39:32.219 subtitle_kickoff: call subtitle_resend_current 15318 frame->format: 3
16:39:32.250 subtitle_kickoff: resend - pts: 20355
16:39:32.250 subtitle_kickoff: call subtitle_resend_current 20365 frame->format: 3
16:39:32.255 [segment @ 000001c18e5414c0] Opening 'J:\transcoding\transcoding-temp\645AD8\645AD8.m3u8.tmp' for writing
16:39:32.255 SegmentComplete=video:0 Index=1 Start=10.470000 End=20.771000 Duration=10.301000 offset_pts=0 start_pts=10470000 Frames=251 filename=645AD8_1.ts
16:39:32.255 [segment @ 000001c18e5414c0] Opening 'J:\transcoding\transcoding-temp\645AD8\645AD8_2.ts.tmp' for writing
16:39:32.280 subtitle_kickoff: resend - pts: 25527
16:39:32.280 subtitle_kickoff: call subtitle_resend_current 25537 frame->format: 3
16:39:32.375 subtitle_kickoff: resend - pts: 30574
16:39:32.375 subtitle_kickoff: call subtitle_resend_current 30584 frame->format: 3
16:39:32.378 [segment @ 000001c18e5414c0] Opening 'J:\transcoding\transcoding-temp\645AD8\645AD8.m3u8.tmp' for writing
16:39:32.379 SegmentComplete=video:0 Index=2 Start=20.897000 End=31.198000 Duration=10.301000 offset_pts=0 start_pts=20897000 Frames=250 filename=645AD8_2.ts
16:39:32.379 [segment @ 000001c18e5414c0] Opening 'J:\transcoding\transcoding-temp\645AD8\645AD8_3.ts.tmp' for writing
16:39:32.381 [segment @ 000001c18e68e6c0] Opening 'J:\transcoding\transcoding-temp\645AD8\645AD8_s3.m3u8.tmp' for writing
16:39:32.382 SegmentComplete=subtitle:0 Index=0 Start=0.000000 End=8.050000 Duration=8.050000 offset_pts=0 start_pts=0 Frames=1 filename=645AD8_s3_0.vtt
16:39:32.382 [segment @ 000001c18e68e6c0] Opening 'J:\transcoding\transcoding-temp\645AD8\645AD8_s3_1.vtt.tmp' for writing
16:39:32.382 [segment @ 000001c18e68e6c0] Opening 'J:\transcoding\transcoding-temp\645AD8\645AD8_s3.m3u8.tmp' for writing
16:39:32.383 SegmentComplete=subtitle:0 Index=1 Start=31.866000 End=31.866000 Duration=0.000000 offset_pts=0 start_pts=31866000 Frames=0 filename=645AD8_s3_1.vtt
16:39:32.383 [segment @ 000001c18e68e6c0] Opening 'J:\transcoding\transcoding-temp\645AD8\645AD8_s3_2.vtt.tmp' for writing
16:39:32.383 [segment @ 000001c18e68e6c0] Opening 'J:\transcoding\transcoding-temp\645AD8\645AD8_s3.m3u8.tmp' for writing
16:39:32.384 SegmentComplete=subtitle:0 Index=2 Start=31.866000 End=31.866000 Duration=0.000000 offset_pts=0 start_pts=31866000 Frames=0 filename=645AD8_s3_2.vtt
16:39:32.384 [segment @ 000001c18e68e6c0] Opening 'J:\transcoding\transcoding-temp\645AD8\645AD8_s3_3.vtt.tmp' for writing
16:39:32.384 [segment @ 000001c18e68e6c0] Opening 'J:\transcoding\transcoding-temp\645AD8\645AD8_s3.m3u8.tmp' for writing
16:39:32.385 SegmentComplete=subtitle:0 Index=3 Start=31.866000 End=31.866000 Duration=0.000000 offset_pts=0 start_pts=31866000 Frames=0 filename=645AD8_s3_3.vtt
16:39:32.385 [segment @ 000001c18e68e6c0] Opening 'J:\transcoding\transcoding-temp\645AD8\645AD8_s3_4.vtt.tmp' for writing
16:39:32.386 [segment @ 000001c18e68e6c0] Opening 'J:\transcoding\transcoding-temp\645AD8\645AD8_s3.m3u8.tmp' for writing
16:39:32.386 SegmentComplete=subtitle:0 Index=4 Start=31.866000 End=31.866000 Duration=0.000000 offset_pts=0 start_pts=31866000 Frames=0 filename=645AD8_s3_4.vtt
16:39:32.386 [segment @ 000001c18e68e6c0] Opening 'J:\transcoding\transcoding-temp\645AD8\645AD8_s3_5.vtt.tmp' for writing

Could it be that the subtitles are being rendered or converted? This file does contain a bunch of subrips:

image.png.9a16a67ebf70f8772c96632c6c5c4614.png

Happy2Play
Posted

If you did not disable video transcoding it would per this 2Mbps set limit.

https://host8/emby/videos/8131/main.m3u8?DeviceId=52a84760-3103-4d70-ba75-0e3a80218b5b&MediaSourceId=mediasource_8131&PlaySessionId=5332d6e739ea48f29d354bfd42a06ec7&api_key=x_secret6_x&VideoCodec=hevc,h264,av1&AudioCodec=mp3,aac&VideoBitrate=1680000&AudioBitrate=320000&MaxWidth=1280&AudioStreamIndex=1&SubtitleStreamIndex=24&SubtitleMethod=Hls&TranscodingMaxAudioChannels=2&SegmentContainer=ts&MinSegments=1&BreakOnNonKeyFrames=False&SubtitleStreamIndexes=2,3,4,5,6,24&ManifestSubtitles=vtt&h264-profile=high,main,baseline,constrainedbaseline,high10&h264-level=62&hevc-codectag=hvc1,hev1,hevc,hdmv&TranscodeReasons=ContainerBitrateExceedsLimit

But you did not show the ffmpeg code used or the stream mapping that happened.

 

Should be just a Server Session display issue as the STREAM info never happened.

Posted
44 minutes ago, Happy2Play said:

If you did not disable video transcoding it would per this 2Mbps set limit.

https://host8/emby/videos/8131/main.m3u8?DeviceId=52a84760-3103-4d70-ba75-0e3a80218b5b&MediaSourceId=mediasource_8131&PlaySessionId=5332d6e739ea48f29d354bfd42a06ec7&api_key=x_secret6_x&VideoCodec=hevc,h264,av1&AudioCodec=mp3,aac&VideoBitrate=1680000&AudioBitrate=320000&MaxWidth=1280&AudioStreamIndex=1&SubtitleStreamIndex=24&SubtitleMethod=Hls&TranscodingMaxAudioChannels=2&SegmentContainer=ts&MinSegments=1&BreakOnNonKeyFrames=False&SubtitleStreamIndexes=2,3,4,5,6,24&ManifestSubtitles=vtt&h264-profile=high,main,baseline,constrainedbaseline,high10&h264-level=62&hevc-codectag=hvc1,hev1,hevc,hdmv&TranscodeReasons=ContainerBitrateExceedsLimit

But you did not show the ffmpeg code used or the stream mapping that happened.

 

Should be just a Server Session display issue as the STREAM info never happened.

I think you might be right. It's strange though, my users reported degraded performance when this happened and I notice my local serer became slightly hard to reach. 

I'll keep an eye on this user and cases like it and check in on the task manager to be sure ffmpeg isn't running.

pwhodges
Posted

Presumably opening the User Session in the dashboard (needs Diagnostics plugin if I recall correctly) would show what's actually happening accurately.

Paul

Posted
15 hours ago, pwhodges said:

Presumably opening the User Session in the dashboard (needs Diagnostics plugin if I recall correctly) would show what's actually happening accurately.

Paul

Yep, sessions can't normally be viewed other than the Dashboard overview. I can't find a plugin called that, is it available in the Emby Catalog?

pwhodges
Posted (edited)

It's called "Emby Diagnostics" in the "General" row of the plugins catalogue.

Among other things (like the ability to royally mess things up!), it adds the "User Sessions" menu item at the bottom of the dashboard menu.

Paul

Edited by pwhodges
Posted
5 minutes ago, pwhodges said:

It's called "Emby Diagnostics" in the "General" row of the plugins catalogue.

Among other things (like the ability to royally mess things up!), it adds the "User Sessions" menu item at the bottom of the dashboard menu.

Paul

Found it, thanks! 

I'll keep an eye on this user and see if the User Sessions will report something else. 

Posted (edited)

@pwhodgesokidoke I've managed to grab one of this user's sessions and it does seem like something is going on transcoding, eventhough transcoding and quality selection is (still) disabled for this user.

image.thumb.png.94b1e9bfd6c2f843a86f88c31634d9cf.png

Any clues?

Additionally

Got the associated directstream which does seems to be transcoding somehow? ffmpeg-directstream-fe4cdd14-00f2-47a9-84f8-641ecef37736_1.txt

Edited by brothom
pwhodges
Posted (edited)

Actually, the ffmpeg log makes sense.  The video and audio are both being copied without transcoding, but the SRT subtitles are being converted to VTT, so the whole stream is being remuxed in an HLS container (not because MKV is no good, but because HLS is what Emby uses).  Ffmpeg is invoked for remuxing even when no transcoding is required.

So the only issue is the apparently spurious reporting of bitrate reduction, which is clearly not happening.

Files whose embedded subs are not SRT will not need this doing, which is most likely why the differences.  As SRT is so universal, I don't know why it is being converted to VTT - maybe for some client?

Paul

Edited by pwhodges
  • Like 1
Posted
Quote

so the whole stream is being remuxed in an HLS container

the conversion to vtt alone does not cause this. It is the user quality setting.

pwhodges
Posted

But the quality is not being changed (no transcoding) - so it's back to the question of why this is happening at all when the user has not got such a quality limit set!

Paul

Posted
22 minutes ago, pwhodges said:

But the quality is not being changed (no transcoding) - so it's back to the question of why this is happening at all when the user has not got such a quality limit set!

Paul

He's restricting video transcoding. But quality settings could still potentially be honored via audio transcoding.

pwhodges
Posted

But there is no transcoding going on, so why is the file being remuxed?  I get that it's a minimal overhead, but it's still doing something unnecessary, isn't it?  And reporting that it is doing something that it isn't.

Paul

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...