-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Stream halts when transition from dynamic to static #3567
Comments
@joeyparrish any chance someone can look into this, I can provide more details if required |
Can anyone review this and help? |
Hi, any chance for someone to take a look? |
@joeyparrish can you please check this issue? I previously sent a test stream over email but I guess it is invalid now, I can provide another one if needed |
The problem is that the segments in the manifest change times with the manifest update. In the dynamic manifest, the segments have segment times near 10,000,000 seconds; but in the static manifest, they are shifted back to 0. Changing segment times in an update isn't supported. According to #3376, you should set the |
Thanks @TheModMaker, the linked ticket was the first issue we encountered and you can see I commented there as well. This fix actually solved the issue with loading the generated manifest after it transitioned from dynamic to static, but I missed the other part about changing the segments timing. |
@OrenMe, please accept our apologies for taking so long to respond to this issue the first time. We are working on our issue-handling process and tools to try to improve our response times. To follow up on your previous comment, have you had a chance to check with the stream provider? |
Hi @joeyparrish, I'm sure you are extremely busy so appreciate that. |
Hi @joeyparrish , sorry it took so long, so this an AWS stream and according to the team they are spec compliant and shared some more details that seem to indicate I ned to manage this in the player side. In addition, the stream I'm testing fails on latest version of the player, it works on 3.2.0, but not on 3.2.1 and also on 3.1.2 but not on 3.1.3 so it is possibly something in latest version, my initial suspicion is with this fix 'Fix tracking of active variant track in live streams' |
@joeyparrish does this help? were you able to review the email and test with the test link? |
Hi @joeyparrish did you get a chance to review the details and test stream sent over the email? |
We are also having problems when a cloud DVR stream transitions from dynamic to static during playback. We have reproduced our problem with Shaka 3.1.2 and 3.2.1. Our problem does not occur with Shaka 2.5.22 |
thanks for the feedback @caridley , @joeyparrish any chance to get this checked? |
I have also experienced this issue on my Chromecast receivers since the SDK was updated to use Shaka v3.0.13. My streams are generated by FFMPEG, and move from dynamic to static once encoding has been completed. I think this may have been caused by #3567 or #3419, though I'm totally guessing here. Everything worked fine on v3.0.10. Haven't checked versions in between, but I'll do a few tests and get back to you asap! |
@joeyparrish would appreciate your feedback here, not sure where to even start looking |
@joeyparrish any update? |
Thanks @caridley ! Will check it as soon as I'm back in the office. |
The issue still exists on 3.3.0 version. @joeyparrish can you please check this issue? |
We faced the same issue when transition from 'dynamic' to 'static' content happens on Chromecast app (shaka version 3.0.13) and Web app with shaka (shaka version 3.2.1). Could please someone share the latest status of this issue? Thanks. |
Is the issue still present in the latest releases? (v3.2.10, v3.3.8, v4.0.4, v4.1.2) |
Hi @joeyparrish. I just checked behavior on the latest shaka release 3.2.10 and it looks like the issue is not reproduced. On the same stream when switching from dynamic to static:
|
Hello @joeyparrish. <MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:mpeg:dash:schema:mpd:2011" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd" id="201" type="dynamic" publishTime="2022-11-08T08:08:18" minimumUpdatePeriod="PT4S" availabilityStartTime="2021-04-15T12:42:29.396000+00:00" minBufferTime="PT12S" suggestedPresentationDelay="PT20.000S" timeShiftBufferDepth="PT544.000S" profiles="urn:mpeg:dash:profile:isoff-live:2011"> <MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:mpeg:dash:schema:mpd:2011" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd" id="201" type="static" mediaPresentationDuration="PT1324.000S" minBufferTime="PT12S" profiles="urn:mpeg:dash:profile:isoff-main:2011"> Shaka doesn't automatically set currentTime after the transition, which causes playback to immediately end, regardless of the currentTime position before the switch. In addition it looks like seeking after the switch is made can cause a stall, possibly similar to #3902 or #2581. A solution of saving [shaka.seekRange.end - video.currentTime] and using it to set currentTime after the transition (using responseFilter handler) works pretty well on versions 3.3.0 to 3.3.2, however from version 3.3.3 and onwards (probably because of the fix in 11f998d), calling shaka.seekRange.end in the response filter handler now returns the seekRange for the STATIC manifest, which means we can't set the currentTime correctly anymore. My question is - is the problem with setting the currentTime caused by an issue on the manifest side, on Shaka side, or on our side ? Thanks, |
If the presentation timeline changes on transition, we can't support that. For example, if segment 12 has presentation time 48300 before the transition, but presentation time 500 after the transition, you've just broken the timeline, and everything Shaka has already buffered now disagrees with the manifest. If the timeline is stable when transitioning from dynamic to static, it should work. If it doesn't, it's a bug in the player. Since in #3567 (comment), @glhvta confirmed that the original issue was fixed in v3.2.10, I think this issue should be closed. @SivanA-Kaltura, if your content timeline is stable as I described, please open a new issue and follow all the instructions in the issue template (including content links so that we can reproduce the issue). Thanks! |
Have you read the FAQ and checked for duplicate open issues?
Yes
What version of Shaka Player are you using?
3.0.13 and 3.2.0
Can you reproduce the issue with our latest release version?
yes
Can you reproduce the issue with the latest code from
master
?NA
Are you using the demo app or your own custom app?
both
If custom app, can you reproduce the issue using our demo app?
yes
What browser and OS are you using?
Chrome on Mac
For embedded devices (smart TVs, etc.), what model and firmware version are you using?
What are the manifest and license server URIs?
I can't share the manifest url because nature of issue is dynamic, here is sample of dynamic manifest and static manifest where transition between dynamic to static causes the issue:
Dynamic manifest
Static manifest
What configuration are you using? What is the output of
player.getConfiguration()
?default config, didn't change anything
What did you do?
play a live dynamic manifest
seek to start of sliding window
wait till it turns to static
What did you expect to happen?
because I seek back then when manifest turned from dynamic to static I expect playback to continue until the end of the remaining duration of playback
What actually happened?
The playback stops immediately when manifest turn from dynamic to static
A warning appears in the console
There is a gap/overlap between Periods
See manifest data for transition between dynamic to static in section above.
The expectation is that it will behave like HLS event playlist where a user can watch a live event, seek back to the beginning and view it, in the meanwhile the even is over and level playlist gets appended with
EXT-X-ENDLIST
but playback keeps going cause user is in DVR part of the stream and only when it reaches the last segment playback stops like a VOD stream.This is related to another issue that I asked in #3376
Maybe we need to apply same fix here that the reference duration will be taken from either
maxSegmentEndTime_
and if not applicable thenduration_
or just reset referencegivenDuration
to some value when manifest transitions from dynamic to static inDashParser.parsePeriods_
?The text was updated successfully, but these errors were encountered: