-
Notifications
You must be signed in to change notification settings - Fork 426
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
HLS video is not resuming after network issues #378
Comments
👋 Thanks for opening your first issue here! 👋 If you're reporting a 🐞 bug, please make sure you include steps to reproduce it. We get a lot of issues on this repo, so please be patient and we will get back to you as soon as we can. |
I get the exact same behavior. My videojs session recursively displays: VIDEOJS: ERROR: DOMException: Failed to set the 'duration' property on 'MediaSource': The 'updating' attribute is true on one or more of this MediaSource's SourceBuffers. |
i have same issue when connection speed drops player can't recover after connection is recovered |
Same issue here, to reproduce simply set "Slow 3G" in network tab in Google Chrome DevTools... after the connection is restored to "Online" the problem persist. UPDATE: Error Detail:
|
I got this problem too. how to fix it? |
I'm trying to find a solution to try and play if a hls live stream isn't available. Once it goes to an error , you can't click to play again. Any ideas ? |
This causes a stack issue, as the player tries to autoload instead of after clicking. Can't turn off autoloading
|
@danrossi It may not catch on error event |
The error must be catched at the line 50294 (ver 7.5.1):
I modified it in this way:
Where However I noticed that after about 5 minutes the video streaming starts again correctly. |
An offline stream will go to error but no way to click to try and play again. Setting the src will try and start loading again. |
An example fiddle I found. With a non existent manifest, you cant click to try and load again |
@alessandro-bottamedi What did you do in |
I reset and reload the video streaming after a timeout... |
@alessandro-bottamedi Thank you, I'll try it later. |
this could wind up being a billing issue for those using cdns to deliver hls. i discovered this bug watching metrics in my own cdn account after flipping the switch in my player for users that are very distant from my hls relay server to help with buffering. using a single client to test (2.5Mbps~ video), set browser throttle speed to about 200kbps. after a while it requests the same ts chunk hundreds of times (300+ if i just let it go forever) balloons up to quite a bit of bandwidth (17x !!) eventually the bandwidth dips off at the end there as it starts abandoning requests. the player stops abandoning requests after a bit which just starts this cycle over again. since the player is still trying to dl all of these segments it is requesting, the player is presumably making the flakey connectivity problem severely worse for the end user since they are now trying to download the same segment hundreds of times. i tested this on the latest firefox and chrome at the time of writing and you can see the videojs version in the screenshot (7.5.4). |
When the connection drops completely, videojs tries all lower quality settings and keeps the lowest. I've also noticed that the waiting event is sometimes followed immediately by a timeupdate event which makes the waiting event almost useless because there's a contradiction that can not be tackled by logic. Also, re-initialising the same stream in the same div after a call to |
Firefox is doing this as well. Videojs version Browsers Platforms |
any update? |
I'm facing the same issue as outlined above - tested in the latest version of http-streaming (v1.11.1) and also on the latest version of video.js (v7.6.5) |
any update? |
I got this problem too. Any update? |
I've built an offline reconnect feature. Tested with HLS and Wowza. |
Can I prevent this error through plug-ins or other methods? |
|
any update? |
any update? I got the same issue |
I've notice that this bug was introduced on version |
in [email protected] i have checked latest videojs and so regression is somewhere here v1.2.1...v1.2.2 there is total of 3 commits that can possibly cause any issue (others are tests or docs modifications) from this commits one is from remaining two one is typeofs minification related (less likely to cause any problem) and second is updates of seeking behavior and i think this commit is a problem 6c68761 (committed by @gesinger and merged by @forbesjo) |
Hello, any update for this issue? |
@gkatsev Testing with 1.13.3 which I believe includes the merged middleware related PR linked above and still experiencing issues. I haven't been able to fully analyze the cause, but for the first ~10-30 seconds after an HLS livestream is published, if I attempt to load the stream I encounter this error. Haven't fully investigated the circumstances yet though to identify a root issue.
Attempting to immediately load an HLS stream after it's published causes this error:
and eventually:
As well as an Once I get a chance to debug this further I'll open a new issue with any findings. Update: Stream loads fine but exhibits issues with seekbar while This seems to only occur when m3u8 playlist is first being generated and stream utilizes the DVR functionality. I would expect video.js (and/or http-streaming) to detect that new segments are being added to the end of playlist and calculate dvr length based on amount of segments in the playlist and the target duration (and maybe using the |
Reverting to http-streaming 1.12.2 for video.js's dependancy resolves my issue, though the It's definitely related to attempting to load a stream that hasn't fully populated it's manifest though. Refreshing the page once the manifest has all the segments required for it's DVR functionality it runs fine, but attempting to load the stream prior to the manifest being fully populated results in video.js re-requesting .ts segments at an increasing rate until it stalls out it's available bandwidth. |
Have a sample of how your manifest looks like during that transitionary period? Also, we have a mux.js update pending in the 1.x branch with some fixes that we need to make. Also, can you try it out on https://videojs-http-streaming.netlify.app/? It's what we hope to release really soon, it's a big update with lots of fixes, changes, and refactors. |
During transition the playlist will appear like this:
(keeps adding additional .ts segments until DVR is filled)
Note:
Seems to run well there. |
@gkatsev Also of note is that when the manifest file is first initially populating, the player does not show the live indicator, and it does not have a progress bar. And it does not show up afterwards either, I have to reload the player again to get the live indicator and progress bar to appear. |
@gkatsev the DOMException is no longer occurring in our environment and playback is much more reliable! Occasionally getting network errors that we're hoping to mitigate via the player's error handler. Clicking the load button on the netlify.app immediately resumes playback. Here's the network error that's likely VPN related:
|
Hi, Is this merged and available in official release of |
I saw a comment somewhere that this issue may have originated after video.js |
Confirmed still an issue using all latest versions of http-streaming #378 (comment) seems spot on for my experience. |
Any news? |
The latest VHS 1.x release line should've fixed the issue as far as we know. In our testing, this should be fixed. Please try latest VHS versions and let us know if you are still experiencing the issue. |
@gkatsev when using react and npm how do I make sure I'm on the latest version of http-streaming? what I am trying to do is:
is there a way to make sure I'm on the correct version? |
@ronneylira I use a custom video.js build and then publish that to NPM and in my package.json:
to replace video.js with a custom build. I'm working on updating my build to the latest RC to test. |
If you install |
I deployed I'll try updating to |
updated to 7.8.4 and http-streaming 2.0.0 and imported as shown above. My server waits 15 seconds before sending the notice to clients that a streamer has gone live, and when that occurs, the player fully reloads (resets) and updates the source for the player. I increased that delay to 30 seconds and it still exhibits the same behavior. I'd hate to have to further increase the delay to 1 minute or greater, but even then I'm not positive the DVR would show initially. If I wait 30 seconds after the player reloads, and then trigger a second player, the live UI and DVR show up normally, but I cannot seem to get the DVR and Live UI to appear on the first load / reset. |
Once more than 30 seconds of DVR are available, it appears to load fine though. I can try reloading after 35 seconds to confirm this, but it would seem fairly consistent that 30 seconds is the required DVR time before things work properly. Edit: didn't want to make another separate comment for this, but I did confirm that waiting more than 30 seconds is required. I set the server to update after 45 seconds, and the stream loaded perfectly this time. |
@DispatchCommit My friend, could you please share your player style file? :D |
@Raino of course! :) |
I THINK I FIGURED IT OUT!
const defaults = {
// Number of seconds of live window (seekableEnd - seekableStart) that
// a video needs to have before the liveui will be shown.
trackingThreshold: 30
}; This explains why I'm not seeing the live UI when my stream has less than 30 seconds of data! Adjusting the threshold value to a more optimistic 5 seconds should ensure we avoid this issue: const player = videojs('vid', {
liveTracker: {
trackingThreshold: 5
}
}); I need to reduce my server delays back down to 10 seconds to test and confirm this is the cause. Edit: Setting the threshold to 0 resolved this issue for me! I'm happy with the behavior now, and I can reduce all my timers to just delay by 15 seconds and have no loading issues. |
I'm experiencing what seems to be this issue. rolling back to 7.2.0 as mentioned above appears to resolve this. any updates on this issue? |
A client just alerted me to my offline feature. Videojs is also now failing to internally retry on client side disconnection. And the interval is not consistent. Either first retry or second retry. It needs a health check on the first retry. I let it retry to a configured interval before starting the offline reconnect sequence, but in the case of client side disconnection, no error event is sent and it fails to retry ! I got work arounds working. |
I tried to go back to 7.2.0. Didn't worked for me. |
i actually ended up upgrading to the latest and just found that my implementation was a lot of the problem |
I guess I never circled back here. We've been working on a new ABR algorithm that is based on buffer length, as part of that we also switched to a timer for doing ABR related things. I believe that this will greatly improve it. Please try it out by enabling |
Hi, Just curious if there is any resolution to this. I am on the 7.9.7 vjs version and 2.8.0 of http-streaming. I am seeing the playback stop after a segment fails to load (in dev console, i am seeing a cancelled request, i am not seeing any dom errors). The playback just stops after and I have waited for over 20mins to just see if it ever comes back but not really. VJS: 7.9.7 Wondering if its a case of just using an older version of the libraries or some additional configuration to turn on. |
Thanks buddy works for me, well appreciated I would have spent a whole day to figure that out lol |
Description
Hello, I have an issue with video.js+http-streaming, that I can consistently reproduce on basicly all hls streams. Video.js is not resuming live stream after network issues (slow connection and resuming to normal).
Here reduced test case but for reproducing you need to throttle your connection with chrome devtools (please see Steps to reproduce).
Steps to reproduce
Results
Expected
Logically after Steps to reproduce video should resume back to live
Actual
video.js+http-streaming try to load infinity times one segment and aborting it, video is not resuming
Error output
Error output contains a lot of
Additional Information
There are 3 segments in samlpe hls playlist, but I tried 30 segments in playlist and problem repeats but after more delay (2 min) in 4 step.
videojs-http-streaming version
what version of videojs-http-streaming does this occur with?
videojs-http-streaming 1.6.0
videojs version
what version of videojs does this occur with?
video.js 7.4.1
Browsers
what browsers are affected? please include browser and version for each
Chrome 71.0
Platforms
Windows 10 64-bit
Other Plugins
none
Other JavaScript
none
The text was updated successfully, but these errors were encountered: