Skip to content
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

Proposal to improve HLS multi-segment prefetching to address server bandwidth-limited playback interruptions #6753

Open
Keidev03 opened this issue Oct 6, 2024 · 0 comments
Labels
Feature proposal Needs Triage If there is a suspected stream issue, apply this label to triage if it is something we should fix.

Comments

@Keidev03
Copy link

Keidev03 commented Oct 6, 2024

Is your feature request related to a problem? Please describe.

Background
In some cases, despite the high bandwidth of the client, the HLS server may be bandwidth-limited, resulting in slow segment loading and causing interruptions or delays in the content playback. Prefetching multiple segments one by one increases the latency between downloads, especially when the server cannot provide data at a fast enough rate.

Objective
This proposal aims to introduce a configuration option that allows the client to prefetch multiple segments instead of just one segment at a time. This will help the client to play content more seamlessly, minimizing buffering even when the server is bandwidth-limited.

Describe the solution you'd like

Proposed Solution
Configuration options for prefetching multiple segments:

  1. Prefetch multiple segments:
    Add an optional configuration to the client that allows the user to configure the number of segments to be prefetched (e.g. 2 to 5 segments at a time) before they need to be played.

This allows the client to store enough segments to play continuously even when the server download speed is slow.

  1. Concurrent loading mechanism:
    The client can prefetch multiple segments at the same time, maximizing the client's bandwidth and minimizing the dependence on the server's download speed.

In the case of limited server bandwidth, prefetching multiple segments will help avoid the situation where the client has to wait for a long time between segments.

  1. Adaptive prefetching:
    The client can prefetch multiple segments automatically based on the current connection status (adaptive prefetching). For example, when detecting that the server bandwidth is limited, the client will prefetch more segments to avoid interruptions.

Benefits
Improved user experience: Clients will have multiple segments available in the buffer to play continuously without interruption, even when the server is limited in bandwidth.
Reduced buffering: Loading multiple segments in advance reduces the risk of experiencing playback interruptions when the server is not loading segments fast enough.
Optimized client bandwidth: Make the most of the client bandwidth to ensure that the video can be played at the highest quality without interruption.
Conclusion
The proposed configuration option to load multiple segments in advance on the client will significantly improve the quality of HLS playback in situations where the server is limited in bandwidth. This not only provides a smoother video playback experience for users, but also makes better use of the bandwidth on the client without increasing the resource requirements from the server.
Thanks development team.

Additional context

No response

@Keidev03 Keidev03 added Feature proposal Needs Triage If there is a suspected stream issue, apply this label to triage if it is something we should fix. labels Oct 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature proposal Needs Triage If there is a suspected stream issue, apply this label to triage if it is something we should fix.
Projects
None yet
Development

No branches or pull requests

1 participant