You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
open inspect panel and go to network requests (filtering then by .ts)
set capLevelToPlayerSize and ignoreDevicePixelRatio to true in the config
resize the video player smaller than 1300px wide
click "Apply"
see the ..._1080_low-bw... segments are loaded
Expected behaviour
When the network isn't throttled, the level-controller should ignore the low-bw segments and instead play the segments with higher quality while still capping the resolution.
What actually happened?
When setting both capLevelToPlayerSize and ignoreDevicePixelRatio to true it seems like the level-controller will choose the first matching resolution in the main playlist. My basic understanding is that, HLS.js sorts the levels only based on the bandwidth/bitrate and when capping the levels (based on the resolution) will get the first matching level that isn't above the client's resolution.
In the example, it'll load the 1080_low-bw.m3u8 sub-playlist and relative segments instead of going for the 1080.m3u8 playlist
Console output
N/A
Chrome media internals output
No response
The text was updated successfully, but these errors were encountered:
MickCoelho
changed the title
capLevelToPlayerSize won't support multiple playlists with identical resolutions
capLevelToPlayerSize won't support multiple levels with identical resolutions
Jul 14, 2023
@robwalch that should work indeed, but I think levels are ordered by bitrates and not by resolution, so this script just gets the lowest quality level for a set resolution.
What version of Hls.js are you using?
1.4.3
What browser (including version) are you using?
Version 114.0.5735.198 (Official Build) (arm64)
What OS (including version) are you using?
MacOS 13.3.1
Test stream
https://hlsjs.video-dev.org/demo/?src=https%3A%2F%2Fdrg2yeq22ha9g.cloudfront.net%2Fhlsjs-test%2FBig_Buck_Bunny_1080_10s_1MB.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==
Configuration
Additional player setup steps
Main playlist:
Checklist
Steps to reproduce
.ts
)capLevelToPlayerSize
andignoreDevicePixelRatio
to true in the config..._1080_low-bw...
segments are loadedExpected behaviour
When the network isn't throttled, the level-controller should ignore the
low-bw
segments and instead play the segments with higher quality while still capping the resolution.What actually happened?
When setting both
capLevelToPlayerSize
andignoreDevicePixelRatio
totrue
it seems like the level-controller will choose the first matching resolution in the main playlist. My basic understanding is that, HLS.js sorts the levels only based on the bandwidth/bitrate and when capping the levels (based on the resolution) will get the first matching level that isn't above the client's resolution.In the example, it'll load the
1080_low-bw.m3u8
sub-playlist and relative segments instead of going for the1080.m3u8
playlistConsole output
Chrome media internals output
No response
The text was updated successfully, but these errors were encountered: