-
Notifications
You must be signed in to change notification settings - Fork 2.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
“Frag Loop Loading Error” since HLS.js v0.7.9 and newer. 100% reproducible. #1440
Comments
We have discovered this issue a bit more than a week ago. The issue with a shift in PTS, if PTS shift is bigger than We are working on a solution where you don't need really hardcode a config value, but there is an understanding of bad fragments and more reliable skip logic (to skip "gaps"). As a temporal solution, you can try to increase |
How would I overwrite the Hls.defaultConfig in the HLS.js provider version 8.0.4 which is used by JW Player 8? Here are all the HLS.defaultConfig parameters set by JW Player 8: |
Hello, @itecx Can we re-upload (partially) this video?
for functional tests? |
“Frag Loop Loading Error” since HLS.js v0.7.9 and newer. 100% reproducible on all our HLS Live & DVR streams
Environment
All my tests were run on Windows 10 v1709 and with the browser versions below:
• Chrome 62.0.3202.89 (Windows 10 v1709)
• Microsoft Edge 41.16299.15.0 (Windows 10 v1709)
• Internet Explorer 11.15.16299.0 (Windows 10 v1709)
Live Encoder:
• Elemental Live Encoder (Version 2.10.3.300262)
• Output: RTMP Multi-Bitrate
• H264, 30fps, GOP 90 frames
Stream Type / CDN services used:
• HLS LIVE with DVR window of 180 minutes
• HLS segment duration: 10 seconds
• Akamai Media Services Live (Stream Packaging)
• RTMP ingest repackaged by Akamai to HLS output
Master.m3u8 URL query string parameters explanation
• Bitrate Filtering: ?b=650-3200 (allows to remove certain bitrates from the multi-bitrate HLS stream)
• Playback Start Time: &start=1509912001 (EPOCH time in seconds)
Steps to reproduce
How to reproduce the Error in HLS.js:
HLS.js LATEST v0.8.7 => BAD downloads fragments like crazy (Frag Loop Loading Error) but never starts playing!
• Test M3U8 URL: //s2ra-lh.akamaihd.net/i/s2e20171105_1@114364/master.m3u8?b=650-3200&start=1509912001
• Test PLAYER URL: http://streambox.fr/mse/hls.js-0.8.7/demo/?src=%2F%2Fs2ra-lh.akamaihd.net%2Fi%2Fs2e20171105_1%40114364%2Fmaster.m3u8%3Fb%3D650-3200%26start%3D1509912001&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined
HLS.js LATEST v0.8.7 => OK exact same stream as 1) above, but the start time is advanced by 1 second. The stream starts on a different segment and works in all HLS.js versions!
• Test M3U8 URL: //s2ra-lh.akamaihd.net/i/s2e20171105_1@114364/master.m3u8?b=650-3200&start=1509912002
• Test PLAYER URL: http://streambox.fr/mse/hls.js-0.8.7/demo/?src=%2F%2Fs2ra-lh.akamaihd.net%2Fi%2Fs2e20171105_1%40114364%2Fmaster.m3u8%3Fb%3D650-3200%26start%3D1509912002&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined
HLS.js OLD v0.7.8 => OK exact same stream as 1) above, starting on same start time as A few fixes in linting configuration #1, works in HLS.js v0.7.8 and OLDER! Only HLS.js v0.7.9 AND NEWER have this problem!
• Test M3U8 URL: //s2ra-lh.akamaihd.net/i/s2e20171105_1@114364/master.m3u8?b=650-3200&start=1509912001
• Test PLAYER URL: http://streambox.fr/mse/hls.js-0.7.8/demo/?src=%2F%2Fs2ra-lh.akamaihd.net%2Fi%2Fs2e20171105_1%40114364%2Fmaster.m3u8%3Fb%3D650-3200%26start%3D1509912001&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined
Expected behavior
The HLS stream should start playing without “Frag Loop Loading Error” independent of what the first segment is that gets loaded. I noticed this problem in JW Player 8 which is using HLS.js v0.8.4. JW Player 7 is working and must be using a HLS.js version v0.7.8 or older.
Actual behavior
Problem Description:
Further test URL's:
I have tried every HLS.js version from http://streambox.fr/mse/hls.js-0.7.0/demo/ all the way up to http://streambox.fr/mse/hls.js-0.8.7/demo/.
All of the issues can also be reproduced with the JW Player Stream Tester here: https://developer.jwplayer.com/tools/stream-tester/
Use the m3u8 URL’s below and change the start time parameter by 1 second increments and see what happens. Have done this for every HLS.js versions to confirm my results. Have also tried on multiple computers with the same results.
Legend:
• BAD ENDLESS BUFFERING starting with HLS.JS v0.7.9 up to v0.8.7! But it WORKS FINE with HLS.JS v0.7.8 and older!
• OK WORKS FINE with all versions of HLS.JS.
M3U8 Test Stream #1 (HTTP or HTTPS):
• OK: //s2ra-lh.akamaihd.net/i/s2e20171105_1@114364/master.m3u8?b=650-3200&start=1509912000
• BAD: //s2ra-lh.akamaihd.net/i/s2e20171105_1@114364/master.m3u8?b=650-3200&start=1509912001 (used in examples above)
• OK: //s2ra-lh.akamaihd.net/i/s2e20171105_1@114364/master.m3u8?b=650-3200&start=1509912002 (used in examples above)
• OK: //s2ra-lh.akamaihd.net/i/s2e20171105_1@114364/master.m3u8?b=650-3200&start=1509912003
• BAD: //s2ra-lh.akamaihd.net/i/s2e20171105_1@114364/master.m3u8?b=650-3200&start=1509912004
• OK: //s2ra-lh.akamaihd.net/i/s2e20171105_1@114364/master.m3u8?b=650-3200&start=1509912005
• OK: //s2ra-lh.akamaihd.net/i/s2e20171105_1@114364/master.m3u8?b=650-3200&start=1509912006
• BAD: //s2ra-lh.akamaihd.net/i/s2e20171105_1@114364/master.m3u8?b=650-3200&start=1509912007
• OK: //s2ra-lh.akamaihd.net/i/s2e20171105_1@114364/master.m3u8?b=650-3200&start=1509912008
• OK: //s2ra-lh.akamaihd.net/i/s2e20171105_1@114364/master.m3u8?b=650-3200&start=1509912009
• BAD: //s2ra-lh.akamaihd.net/i/s2e20171105_1@114364/master.m3u8?b=650-3200&start=1509912010
• OK: //s2ra-lh.akamaihd.net/i/s2e20171105_1@114364/master.m3u8?b=650-3200&start=1509912011
• OK: //s2ra-lh.akamaihd.net/i/s2e20171105_1@114364/master.m3u8?b=650-3200&start=1509912012
• BAD: //s2ra-lh.akamaihd.net/i/s2e20171105_1@114364/master.m3u8?b=650-3200&start=1509912013
• OK: //s2ra-lh.akamaihd.net/i/s2e20171105_1@114364/master.m3u8?b=650-3200&start=1509912014
• OK: //s2ra-lh.akamaihd.net/i/s2e20171105_1@114364/master.m3u8?b=650-3200&start=1509912015
• BAD: //s2ra-lh.akamaihd.net/i/s2e20171105_1@114364/master.m3u8?b=650-3200&start=1509912016
M3U8 Test Stream #2 (HTTP or HTTPS):
• BAD: //s3ra-lh.akamaihd.net/i/s3e20171105_1@114366/master.m3u8?b=650-3200&start=1509922800
• OK: //s3ra-lh.akamaihd.net/i/s3e20171105_1@114366/master.m3u8?b=650-3200&start=1509922801
• OK: //s3ra-lh.akamaihd.net/i/s3e20171105_1@114366/master.m3u8?b=650-3200&start=1509922802
• BAD: //s3ra-lh.akamaihd.net/i/s3e20171105_1@114366/master.m3u8?b=650-3200&start=1509922803
• OK: //s3ra-lh.akamaihd.net/i/s3e20171105_1@114366/master.m3u8?b=650-3200&start=1509922804
• OK: //s3ra-lh.akamaihd.net/i/s3e20171105_1@114366/master.m3u8?b=650-3200&start=1509922805
• BAD: //s3ra-lh.akamaihd.net/i/s3e20171105_1@114366/master.m3u8?b=650-3200&start=1509922806
• OK: //s3ra-lh.akamaihd.net/i/s3e20171105_1@114366/master.m3u8?b=650-3200&start=1509922807
• OK: //s3ra-lh.akamaihd.net/i/s3e20171105_1@114366/master.m3u8?b=650-3200&start=1509922808
• BAD: //s3ra-lh.akamaihd.net/i/s3e20171105_1@114366/master.m3u8?b=650-3200&start=1509922809
• OK: //s3ra-lh.akamaihd.net/i/s3e20171105_1@114366/master.m3u8?b=650-3200&start=1509922810
• OK: //s3ra-lh.akamaihd.net/i/s3e20171105_1@114366/master.m3u8?b=650-3200&start=1509922811
• BAD: //s3ra-lh.akamaihd.net/i/s3e20171105_1@114366/master.m3u8?b=650-3200&start=1509922812
Console output
The text was updated successfully, but these errors were encountered: