-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
Can't have unbuffered seek to 0 when live stream starts #692
Comments
When there is a seek, there are a number of cases that we may be in: Live/on-demand, buffered/unbuffered, in-range/out-of-range, etc.. That TODO is about explaining how the code handles all those cases in the way that we want. It is unrelated to your actual question. In live streams, segments may not be available forever. Usually they are only kept around for a set amount of time. In DASH, this is specified using the You may want to look at |
Ah, sorry -- I should have been more specific. For live playback the code calculates a safe starting point by taking the earliest start, adding 1 second and the rebuffering goal. Assuming that safe region is inside the available window, it will add another 2 seconds to the targetTime. Imagine a live manifest where the My questions are:
It seems to me that rolling, or not, the beginning of the buffer ( |
Ok. We could probably drop the 1, maybe the 2. I'll need to discuss with the rest of the team. Unfortunately the person that wrote it is no longer here and I'm a little fuzzy on the details of those. This also needs to be adjusted for our (relatively) new in-progress recording support. The reason we add |
Understood. I feel this conversation really comes down to getting a precise definition of On a more practical level, I guess I'm saying that the server should be responsible for making sure segments remain available for |
The expiration is calculated based on the end time of the segment. So if The problem on the client is that we have no way of knowing how long a segment remains available on the server, so it is the client's responsibility to enforce the availability window. Now, we could allow playing content that we have already downloaded (e.g. the case where we "fall" outside the availability window while buffering); however, this can cause confusion for the users (especially with the seekable range). This also breaks the intent of the TSBD, which is that the content is no longer available after that time, so we shouldn't play it. We allow playing content that is near the earliest availability time, but so long as we are buffered so we don't fall outside the range while buffering. |
Ok, I get where you're coming from here. In the case where there is no |
You're right. The problem is we adjust the availability start to 0. After we adjust, we add |
Playhead.reposition_
During live playback, the
Playhead.reposition
method prevents the user from scrubbing all the way back to 0 (AST). There's a comment in the code with a TODO to explain why, but no explanation is given.Can you guys explain this?
The text was updated successfully, but these errors were encountered: