do not switch quality levels this fast.
quality levels are changed very often. Also, some segments are loaded in more than one quality.
this causes video and audio lags.

the second number in the filename is the quality.
xhr-loader.js:68 GET http://zdf1314-lh.akamaihd.net/i/de14_v1@392878/master.m3u8 403 (Forbidden)
shit... our livestream is geo ip blocked, do you have a proxy to germany?
nope sorry
ok we will work on a solution tomorrow.
posting a metrics permalink would help in the meantime
longer periods causes Errror "Error 756 Too long request string" for perma links.
So here is the data for a longer period:
metrics.txt
@axten and I had could reproduce the issue also with this stream:
Can you play this one?
checking
ok, there are 2 things:
most of your fragments do not start with a Key Frame.
=> as a consequence, when switching between renditions (to level L, SN N), hls.js needs also to load frag level L, SN N-1 to be able to decode the first frames of frag level L, SN N
as it adds extra latency, upfront buffer becomes short, and the changes i did in ABR (taking into account upfront buffer to choose rendition) triggers a switch down to avoid a rebuffering (although bw is enough)
=> you should try to have your fragment starting with KF
=> i will try to disable the upfront buffer check in ABR for live streams (it might not be appropriate)
thank you for the quick support!
we will check the keyframe issue with our streaming department.
plz recheck against latest demo page with 2Mb/s bw throttling, it should not oscillate that much in case of frag not starting with KF
looks better now, thank you very much!
some metrics
metric.txt
looks better
most of your fragments do not start with a Key Frame.
This is due to the default mechanism used in Akamai stream packaging, which is deriving HLS from live RTMP input. The default enforces that the segments are of exactly equal length, following a strict requirement of the Apple app qualification process. I am not sure if this requirement is still valid, but it used to be for quite a while and there have been cases in which apps have been rejected because the segments did not have equal length. Forcing equal length on the packaging side in combination with the packages arriving from the encoder via RTMP can lead to fragments not starting with a Key Frame. As having a Key Frame at the beginning is not a strict requirement by Apple this makes sense as a default.
However, it is possible to change the packaging behaviour on Akamai's side to produce only segments that start with a key frame. Depending on the encoder input, this can lead to segments of slightly different length, though. To my understanding this option is currently being discussed with the client.
Most helpful comment
ok, there are 2 things:
most of your fragments do not start with a Key Frame.
=> as a consequence, when switching between renditions (to level L, SN N), hls.js needs also to load frag level L, SN N-1 to be able to decode the first frames of frag level L, SN N
as it adds extra latency, upfront buffer becomes short, and the changes i did in ABR (taking into account upfront buffer to choose rendition) triggers a switch down to avoid a rebuffering (although bw is enough)
=> you should try to have your fragment starting with KF
=> i will try to disable the upfront buffer check in ABR for live streams (it might not be appropriate)