-
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
Add support for fetching multiple segments in parallel #4658
Comments
@tyrelltle All improvements are welcome, I assign the issue to you so you can work on it. Thank you! |
Thanks @avelad i will create a PR for it |
Overlapping segment requests has the potential to increase bandwidth utilization (getting throughput closer to actual bandwidth capability). This could lead to the ability to stream at higher bitrates/resolutions for some users. The component responsible for that decision would be StreamingEngine, which makes requests. So I expect you would need to focus your efforts there. Keep in mind, though, that when bufferingGoal is met, there's no longer any opportunity for parallel fetches, as we would naturally stop fetching entirely. That probably explains the gaps in your screenshot above. |
@joeyparrish @avelad After going though couple options I am thinking to use the solution implemented in this abandoned PR What the abandoned PR does:
Another option I was thinking but suggest not proceed
I am thinking follow the approach from the abandoned PR, and in additon, add logics to ensure the Map buffer is cleaned up when seek happens, and when the code path of makeAbortDecision_ is called. But let me know if you suggest other approaches, meanwhile I will work on the PR. Thanks ! |
closes #4658. This solution is inspired by abandoned PR #2809, which implements segment prefetching ahead of current play head. ![image](https://user-images.githubusercontent.com/3315733/205465795-75c605d2-c2e3-4d03-90f5-46a72a7189d2.png)
closes shaka-project#4658. This solution is inspired by abandoned PR shaka-project#2809, which implements segment prefetching ahead of current play head. ![image](https://user-images.githubusercontent.com/3315733/205465795-75c605d2-c2e3-4d03-90f5-46a72a7189d2.png)
Have you read the FAQ and checked for duplicate open issues? Yes
Is your feature request related to a problem? Please describe.
Currently shaka is fetching the segments sequentially, for each of the audio and video streams.
When the client network is slow, especially when playback speed is set to 2x, rebuffering may happen frequently when the buffer is starved.
Describe the solution you'd like
We would like to re-start the previous PR #2809 which adds parallel fetching of mpeg-dash segments. However, before doing that we would like to confirm if there is existing feature plan to solve this problem, since this PR was old (2020).
Describe alternatives you've considered
We could also avoid changing shaka code, by creating a custom HttpFetchPlugin to kick start fetching segment of next presentation time when fetching each segment of current presentation time. However this sounds like hacky solution. ex: what if there is a race condition and etc.
Additional context
Not at the moment.
The text was updated successfully, but these errors were encountered: