[Feature Request] DASH (Dynamic Adaptive Streaming) with plex server

So I recently have had to deal with networks with periods where bandwidth is very limited. During this time I thought it was impossible to actually stream from any service I use (Plex / Amazon Video). I pretty much gave up but when I went to youtube and it just worked, even with pretty much no bandwidth youtube still played like a charm. Upon looking into what magic they were using I saw they have their own special way to stream content via HTTP called DASH (https://en.wikipedia.org/wiki/Dynamic_Adaptive_Streaming_over_HTTP). I am not sure what actually goes into implementing this but looking online it is open sourced from at least one developer (https://github.com/bitmovin/libdash). I feel like could definitely be useful for mobile users / people in areas with less optimal networks.

Plex already uses DASH on supported clients.

Youtube is able to achieve smooth playback not because of the protocol they use to stream but because they have insanely large infrastructure with local CDNs that serve content and teams of developers that are constantly tweaking things to make sure you don’t get buffering.

Youtube has multiple versions of the same video at different bitrates to meet everyones bandwidth requirements and very sophisticated algorithms to make sure that you get the best experience.

Here is a good video explaining how Google does this:

@drzoidberg33 said:
Plex already uses DASH on supported clients.

Youtube is able to achieve smooth playback not because of the protocol they use to stream but because they have insanely large infrastructure with local CDNs that serve content and teams of developers that are constantly tweaking things to make sure you don’t get buffering.

Youtube has multiple versions of the same video at different bitrates to meet everyones bandwidth requirements and very sophisticated algorithms to make sure that you get the best experience.

So what might be a nice option to have (for those of us with beefy CPUs) is enable multiple simultaneous transcodes so that we can seamlessly have it switch between quality as necessary :smiley:

@drzoidberg33 said:
Plex already uses DASH on supported clients.

Youtube is able to achieve smooth playback not because of the protocol they use to stream but because they have insanely large infrastructure with local CDNs that serve content and teams of developers that are constantly tweaking things to make sure you don’t get buffering.

Youtube has multiple versions of the same video at different bitrates to meet everyones bandwidth requirements and very sophisticated algorithms to make sure that you get the best experience.

Here is a good video explaining how Google does this:

https://youtu.be/OqQk7kLuaK4

On plex I set the video to the lowest transcode setting (64kbps) and was still not able to run 10 seconds without buffering. However youtube was able to stream without a single buffer. It might very well be latency but to me this seems more of a problem with the intertubes not being large enough and youtube doing something more efficiently. I am not sure how plex server streams data or how efficient it is at it, but if it could be more efficient it would be something nice to look into, hence this discussion ;). To give some more information my location is currently New Delhi, India while my home server is located in Arlington VA and I am seeing about ~300ms latency (which is not good but I would still think acceptable to stream data)

I ran into some buffering and quality issues at some point and I think that Plex only “scales down” the video portion. So if you have Dolby 5.1 sound at 640kbps in your file that could be the problem since Plex doesn’t seem to touch it if your client supports it. At least that’s what I though the problem was in my case when I looked at my Android app pushing to a Chromecast and it only showed video bandwidth to switch.
Anybody who knows - please say that I am wrong.

Early 2021 clean-up: implemented