Dashling is a Dynamic Adaptive Streaming over HTTP (DASH) implementation. It downloads media fragments and pushes them into media buffers
provided by the browsers Media Source Extension support. As latency is more understood and buffer availability changes, quality is adjusted appropriately.
See benefits over dash.js.
Benefits over dash.js:
No scheduler, which causes delays in between requests.
No nasty dupe fragment download bugs.
Retries with better delays. (500, 1500ms in between.)
Audio/video fragments are appended to MSE as a pair only when both are available, avoiding undefined browser behaviors.
No init fragments are requested if they're not needed.
No requests are canceled unnecessarily, only on seeking.
On seeks that require downloading new content, pending requests are canceled.
Can specify a default current position on startup, allowing for "reboots" if necessary, as well as sending "position" hyperlinks.
Quality rules are much more predictable: if you don't have enough buffer, we will be more conservative about quality. As your buffer amount grows, we increase quality. We can also do things like "avoid quality changes for X number of fragments."
Supports avoiding manifest request by default, if you have alternative means to provide necessary data.
Smaller code, avoids things we don't need to support.