-
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
Possible live streaming regression in 2.4.0 #1729
Comments
I have exact same issue (same log output). Live with DRM works on 2.3.0 but not on 2.4.0. |
it seems that the problem appears with the commit 1657f8f 27th of October. It only occurs whith calculated live edge. |
Talking a look now. The live edge stuff should all work the same but I must of missed a case in order to simplify live edge as a rule, no need for that, and adding dynamic multiperiod. |
I think the problem is that there is a significant error between the calculated live edge based on the availabilityStartTime and the actual live edge advertised by the SegmentTimeline. In v2.3 and before this error was determined to be the I see your segments have styp (and sidx) boxes at the end. This is invalid - the styp box must be the first in the box otherwise it may be ignored (which it probably is by most players anyway). Likewise, the sidx should probably be before the moof. |
Forgot to mention that the availabilityStartTime is moving around between 2016-10-26T10:00:51 and 2016-10-26T10:00:53 between refreshes of the manifest. This is invalid according to the DASH specification. |
@bbcrddave I test with the stream http://vm2.dashif.org/livesim-dev/segtimeline_1/testpic_2s/Manifest.mpd. There is also some issues. The stream doesn't start because the call to timelineConverter.setTimeSyncCompleted(true) is not done. So, in the onPlaybackMetaDataLoaded callback, seekToStartTimeOffset is not called. |
The last issue was due to a wrong clock time on my PC. :-( |
@nicosang - and the clock sync failed to solve that? There is suppose to be a bit of code that figures out the local clock offset from NTP server and use that offset for live edge. Maybe a bug there as well? |
The problem is that there's no time sync by default when using SegmentTimeline. I recall this was removed because doing so was causing changes to the times requested when we should be trusting the timeline. Not doing any time sync seems incorrect for me as we should still be paying attention to things like the availabilityStartTime and without syncing to a known good clock it's hard to see how we can calculate whether any segments should be available for example. I wonder if the whole SegmentTimeline thing needs revisiting ... |
Ah yes. Kilroy asked for us to remove time sync for seg timeline as it should be useCalculated based on timeline. I agree we should still sync, figure out client offset and apply. |
In Spec or in Dash.js or both. I think the entire way we handle segment formats should be reconsidered lol. But I think we all agree there. |
Adding another live stream which is not playing correctly to the mix: http://irtdashreference-i.akamaihd.net/dash/live/901161/bfs/manifestARD.mpd (from sources.json). Starts to play but ultimately stalls 😞 |
Hmm I am seeing same on 2.3. This IRT stream has always had issues and failed at some point. Right now I have 2.3 and 2.4 playing side by side with same results. Still no failure yet so Ill keep trying but not sure it is a regression ? |
same issue see here, http://haidshintn-i.akamaihd.net/dash/live/926080/24test/dash.mpd See infos here: #1721 |
I can confirm the same problem with a dvr based live stream. However if using the akamai one its ok because of the Akamai time server ? this is ok and starts right away http://24x7dash-i.akamaihd.net/dash/live/900080/dash-demo/dash.mpd |
I tried a custom time server and it doesn't seem to be loaded using the old method
Could that be part of the problem ? |
I just worked out time server will not be used because the manifest has "SegmentTimeline" I also manage to catch this log. "SegmentTimeline detected using calculated Live Edge Time " If I hack this to be disabled it will use the timeserver and start immediately. but the time never updates and stops pretty soon after. In 2.3.0 version it is fine and doesn't stop.
|
I think this is a red herring @danrossi . We have always had the the same logic for live edge until 2.4 when I changed some stuffs location but not fundamental logic and idea.. I am debugging with the live sim SegTimeline test stream and will update this thread soon. |
@AkamaiDASH even with the 2.3.0 version it seems flakey. The time never updates it still suffers the buffer out when reaching the dvr window also. I am having similar startup issues with VOD after seeking. Checking if to report that yet. |
Thanks @danrossi |
I've commented in the right ticket regards to VOD startup times. It seems 2.3.0 is unaffected with that also. So some regressions have crept through. They might be all related ? |
ScheduleController.js:340 startTime from live edge search 1485287794 1485287794 CORRECT coming from updateTime and calling getActualPresentationTime. Seems like the seekToStart is not getting fired as mentioned and this is the issue. |
I can confirm that this stream |
@JontyUsborne Looks like when you did this work in the git history it was before I refactored Dynamic Multiperiod. Then I merged my work and much later we merged your PR which now causes and issue with this stream. It will start up but does not seek to the live edge. The liveedge calcs are correct just something in playebackController is now broken post #1658 merge. Would you mind taking a look so I do not break what you intended to fix? |
I think I have found the issue. We never did a timeSync on SegTimeline, at least for a few releases, but we did set timelineConverter.isTimeSyncCompleted to true if SegmentTimeline and that is missing. When I add that back in it seems to resolve the issue for this particular stream. Ill test with some of the other stream urls mentioned. @JontyUsborne I think you are good for now sorry about the back and forth on this |
fix for segmenttimeline live start #1729
We believe this has been fixed in development. Feel free to reopen if this is not the case. |
Thank you so much! Thanks Martin |
Thank you for confirming @nitrat7 . |
Hi again, I just tried dash.js nightly build with my stream (https://svt01-a.akamaized.net/u/svt01.mpd) and it works better now, but after a few seconds the stream stops. From Chrome's developer console it looks like the player stops fetching segments. Again, the stream plays fine in 2.3.0. |
Ok thanks for reporting @carlanton I am looking now and will update this ticket. |
Yeah I see this clearly. Look at the time stamps in the player on controlbar. In 2.3 it is expected to be what ever hold back from the DVR live edge. So in 2.3 ther is 14 seconds behind live and you get 10 seconds on playhead time (left side of seek bar) and 24 seconds for DVR window. In 2.4 however, you get 19:03 which is completely incorrect. Something to do with DVR metrics refactor possible but I need to dig more. Stand by please ;) |
OK i have tracked it down to this exact commit sha 1657f8f - Looking for a reason and solution now. Thanks |
@carlanton OK after a bit of searching I figured it out. Your stream is now playing great in 2.4.1. Ill test more to make sure nothing regressive in Multiperiod for live but all the other live sim streams are working as well. I will commit tonight or tomorrow first thing and get a nightly build going. I will also freeze code for 2.4.1 if you can confirm it works. |
@AkamaiDASH , is it the same issue than with the sample http://vm2.dashif.org/livesim-dev/segtimeline_1/testpic_2s/Manifest.mpd? If you play this live stream, and you want to seek near the limit of the dvr window, the stream doesn't restart... |
fix for all live edge issues mentioned in #1729
OK please confirm that PR #1768, which is in RC1 and dev and up on nightly solves the issue for all. I have tested with the SVT stream and the all live sim streams and akamai streams. All start at proper live edge, can seek and resume. I have only tested on Mac OS Chrome and FF at the moment. |
This stream is broken for me https://svt01-a.akamaized.net/u/svt01.mpd The time update is very broken, it actually goes back and forth . the duration never changes. I'm sorry I can possibly email another manifest , but I get no time update and duration never changes. The startup problem has been fixed as far as I can see. I will make a report in regards to startup times after VOD seeking, and some possible bitrate switching issues. |
Does anyone have an email or somehow email me, the client I am working with doesn't want the url on public domain so I have to keep their requirements. The Akamai feed the time updates properly and duration updates properly. http://24x7dash-i.akamaihd.net/dash/live/900080/dash-demo/dash.mpd I'll start another ticket with the strange seek update issues with VOD. |
@AkamaiDASH I just tried the stream in dash.js nightly and it works great. Thanks a lot! 💯 |
@danrossi I'm not sure if I understand what you mean. Are you talking about the manifest or the player? My stream is a live stream without timeshift/DVR enabled so I suppose the player only shows the current buffer or something. In production we basically hide the player controls to avoid confusing our end users :-) |
I'm talking live DVR. Even if its live the time should be updating. It doesn't for your stream and neither the DVR stream I am testing. |
It's not much to do with DVR but any live stream. The time stops updating for me here with this wowza stream. I'm not sure which manifest is best to choose ? http://media11.uvault.com/live/2086-828d4b5/liveevent/manifest_mpmpm4sav_mvmvtime.mpd |
Making another ticket up. |
Environment
Steps to reproduce
Load the live stream https://svt01-a.akamaized.net/u/svt01.mpd in the latest reference player.
Observed behaviour
This live stream does not start in 2.4.0. Segments are downloaded and the manifest is refreshed, but the stream never starts to play.
The stream works as intended in 2.3.0 and earlier releases.
Console output
dashjs-2.4.0-live.txt
The text was updated successfully, but these errors were encountered: