-
Notifications
You must be signed in to change notification settings - Fork 1.7k
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
Playback not stable/reliable enough: How to pinpoint the problem? #717
Comments
@torerikal, the following change should fix one of the causes of the issue: |
Hi @torerikal We already noticed that 1.4 release has stability problems (stalling/freezing). For me (I can only speak about on demand streaming) there are 2 different cases: Did the stall/freeze happen after seeking or without seeking? Case 1 (after seeking): Case 2 (without seeking): The combination of both fixes provides us stable on demand streaming on our productive system |
@torerikal, thanks for testing the fixes. I have already merged them into the dev branch. Continue investigating the rest causes. |
@torerikal, the test mpd that you provided seems to be down. Do you have any other mpds to test? I have got a couple, but they have a single representation for audio/video and the playback appears to be stable. I suspect that the issues can be related to the quality switch process, so if you have a live content with multiple representations it would be very helpful. |
Sorry, we closed down the live stream by the end of last week. It is restarted now, so it'd be great if you could have a look, @KozhinM . @bwidtmann, The most apparent condition is what you describe in case 1, occurring after seeking. We have applied your fix, but need to isolate and re-run the test cases with and without it, before we are able to give an answer with confidence. Unfortunately we are a bit tight on our schedule, so it might take some more time. |
@torerikal try setting this config params if you want to achieve more stable seeking behavior: |
Update: sometimes the stall occurs because DashHandler.isMediaFinished returns true while it should return false. I observe that in this case start time of the segment in isMediaFinished > period end time. Segment time is correct since we get it from the mpd. Period end time is calculated as |
We have done further tests of the on demand seeking issue. With PR633 the problem is less apparent, and the BufferController config params made the issue almost un-reproducible. However, we did manage to still get the stall symptom after a lot of attempts. Our observations show that sometimes Dash.js gives up on fetching segments, and sometimes it never resumes playing when the buffer level becomes good enough again. In the latter case, we can resume playback manually by modifying the playback rate directly on the video DOM element. Since this issue was reported, we have switched to another solution for DASH playback in the browser. This makes it less relevant to do any more troubleshooting of the issues described here. However, I hope these discussions and testing reports has brought some value to the Dash.js project also for other users of the library, and to the quality of the project. |
@torerikal I encourage you to check out Dash.js 2.0 as we fixed many of the stability issues. I am going to close this issue. |
We are experiencing several instability and reliance problems with Dash.js. Too often, and in most cases quite random, the playback just freezes/stalls, without ever resuming.
It looks like the sources of this symptom can be quite different. The most apparent and reproducible issue occurs with live streams, for example this one:
http://hls-live.akamai.tv2.no/wzlive/_definst_/smil:Wza01_dashtest.smil/manifest.mpd
Repeated playback attempts of this stream in the nightly built version, http://vm2.dashif.org/dash.js/samples/dash-if-reference-player/index.html, shows that the stream stalls without recovering. Not every time, but in more than 1 of 10 playback attempts.
It is possible to get the stall to occur within the first playback minute, with this frequency, but we also have examples of streams playing half an hour before it happens.
We also experience the issue #716 in some playback attempts, but when that error doesn't occur, the non-resuming stall symptoms still appear more often than every 10th attempt.
The error occurs in Chrome 44.0.2403.155 (64 bit) with good network conditions.
It might be something wrong with the stream characteristics, but how can we pinpoint this? Observing log output, and inspecting state by adding breakpoints, has revealed the following for the mentioned live stream:
We can't point at anything wrong with the stream manifest. Neither are we able to point at code parts where the "abandonment" of adding new segments is happening. When inspecting the executing code with breakpoints, it looks like the condition could originate from anywhere in rules or controllers.
Any qualified suggestions on what's going wrong, or how to troubleshoot this, would be helpful.
It should be mentioned that the 1.4.0 release version consistently gives up on the live stream example after 15 seconds. This looks like another issue.
We have also observed some other examples of on demand streams never resuming after stall state being set. In this case, the buffer level runs low due to connectivity issues, but when it gets above the threshold again, the playback is not resumed anyhow. Unfortunately, this error is not that frequent or easy to reproduce.
For stall conditions that doesn't resume, even if all requests have completed successfully, and there are no bandwidth or connectivity issues, Dash.js could benefit from having a more "active" approach to identifying it, and at least reporting the reason for why it doesn't resume, if not being able to resume playback.
The text was updated successfully, but these errors were encountered: