I'm currently on the M1 arm Mac, but this issue has been tested and is reproducible on Intel Macs as well.
This manifest has keyframe aligned segments and that seems to be related to the issue. When using an encoding that does not align segments to keyframes, we are not seeing the issue.
What version of Hls.js are you using?
1.0.7
What browser (including version) are you using?
Version 92.0.4515.131 (Official Build) (arm64), FireFox 90.0.2 (64-bit), Safari Version 14.1.2 (16611.3.10.1.3)
What OS (including version) are you using?
Mac OSX 11.5.1 (20G80)
Test stream
https://hls-js.netlify.app/demo/?src=https%3A%2F%2Fwistia-temp.s3.amazonaws.com%2Fluke-hls-test%2Fv2.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==
Configuration
Additional player setup steps
I'm currently on the M1 arm Mac, but this issue has been tested and is reproducible on Intel Macs as well.
This manifest has keyframe aligned segments and that seems to be related to the issue. When using an encoding that does not align segments to keyframes, we are not seeing the issue.
A demo of the same video, just not using keyframe aligned segs is here: https://hls-js.netlify.app/demo/?src=https%3A%2F%2Fembed-fastly.wistia.com%2Fdeliveries%2Fc2fc22d24f95a3d38cb7b3e64d5738c1b006e9bb.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==
Checklist
Steps to reproduce
bufferStalledError
mediaError
and buffering on the playerExpected behaviour
The video finishes playing and the
ended
event fires.What actually happened?
Chrome and Firefox
A
bufferStalledErorr
is thrown from HLS.js and the buffer spinner becomes visible. HLS.js does not recover and we remain in this state.Safari
A
bufferStalledError
is thrown from HLS.js, but the video does not buffer and HLS.js recovers.Console output
Chrome media internals output