-
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
Document ABR and Streaming Behavior #629
Comments
ABR will never cause content already in buffer to be replaced. We used to remove data ahead of the playhead to make ABR decisions visible sooner, but this created a bad user experience on some platforms.
Yes. If autoplay is disabled, playback will not begin until the user clicks play. During buffering, the bandwidth estimate is built, and can trigger an ABR decision. As stated above, that decision will not cause anything to be removed. So the first segment at least will be at the initial resolution. @TheModMaker is working on additions and changes to our docs to help explain ABR better. Thanks! |
Issue #629 Change-Id: I9548c24078e07537ae4c1e6f28461c992f5f794e
I just pushed a change that adds more docs to help. Here are the answers to your questions:
When a segment is downloaded, SimpleAbrManager will decide if a better (higher bitrate) stream is playable based on the current network bandwidth estimate. It will wait some time between switches to avoid switching back and forth a lot. This also changed recently to support HLS. Before audio and video were selected separately. Now, there are audio/video pairs called variants. AbrManager will select the best variant it thinks can be played.
As Joey said, we don't fetch other streams, only the one that is currently playing. Once AbrManager decides we need to switch, we will start downloading that quality. However, since we don't clear the buffer, the old content will play until the playhead gets to the new content. This will be less than
There aren't many options to affect ABR directly. In v2.1, you can pass a restrictions object to restrict decisions by AbrManager based on video size, bandwidth, etc.. You can also specifiy the There are several streaming parameters that affect buffering. |
@robwalch Does this answer all your questions? Is there anything else we can do? |
Yes thanks @TheModMaker! |
Is there a way to make bufferingGoal override the manifests minBufferTime? In my manifest it is set to minBufferTime = 10 sec. Which always makes my player wait for about 10 sec, and then it plays. But I get the first "image" of the stream right away. |
@raskri It is best to start a new issue, not to resurrect old threads. Also questions may be better suited in the mailing list. But to answer your question, there is no way to override the |
@TheModMaker, that's not entirely accurate. You can override the manifest's |
I'm looking for answers to these questions to better understand playback start time and adaptive bitrate switching in shaka. I've made a few assumptions from the configuration docs. Can you confirm these and provide some answers to the unknowns?
Answer: Approximately 2-30 seconds; between the streaming rebufferingGoal* and bufferingGoal.
*A DASH manifest's minBufferTime, if greater, overrides rebufferingGoal
Answer: (logic is the same for up and down)
Note: in the case of multiple audio qualities, the middle quality is always selected.
Don't know. How much previously buffered media replaced - as much or as little as possible?
Don't know. Revise answers to last two questions.
Answer: Bandwidth estimator sampling rate increased... (need more specifics on timing and bytes evaluated)
Answer: These are the defaults
See:
http://shaka-player-demo.appspot.com/docs/api/tutorial-config.html
http://shaka-player-demo.appspot.com/docs/api/shakaExtern.html#AbrConfiguration
http://shaka-player-demo.appspot.com/docs/api/tutorial-network-and-buffering-config.html
http://shaka-player-demo.appspot.com/docs/api/lib_abr_simple_abr_manager.js.html#line69
Thank you!
The text was updated successfully, but these errors were encountered: