I think that would be nice to transcode a video according to the available CPU / RAM on the server, if the server is too busy, you lower the quality instead of having to wait for a buffer on the client.
Also if you’re remote and you have a limited bandwith, the client could automatically ask the server to lower the quality according to the available bandwith.
I’d propose adding an “Automatic” entry to the video quality setting per client that would operate something like this:
down-scale:
Starts a stream, initially buffers = keeps default setting
2nd time buffering (1st being initial), increment a counter = keep same setting
3rd time buffering, counter now at 3rd buffering attempt = drop quality setting one notch & reset counter
Repeat
up-scale:
If stream keeps up for a certain amount of time, and there is a higher quality, bump the quality up one notch and reset timer
If possible, it would be best to have only new data of the higher quality appended to the end of the current local cache so that it doesn’t disrupt playback
This would be a fantastic feature to have when traveling or roaming outside the home network because bandwidth varies on different networks and having to mess with settings manually can be a nuisance.
Yes I feel this is very important too. I thought Plex worked like this and was very surprised to see that it was not. My server can transcode most files on the highest bitrates, but not if the source file is of very high quality. Then it will not be able to keep up in realtime, causing buffering. It’s not really always possible to tell your guests to lower the bitrate then (which causes my server to be able to keep up again). Not to mention sometimes the internet speed is also not up to par on the receiving end.
It’s a bit odd how the Android client for example can know and then tell the user that the internet speed is not sufficient and ask the user to lower the quality (not all users understands how to do this), but it can not simply lower it automatically.
Also in my case, the server is in the living room and is also used to play games on. Sometimes heavy games. Because the CPU is then already busy with the game, transcoding will be slower and sometimes it will fail to keep up because of this, causing buffering on files it normally handles. It’s simply not feasible that the user on the receiving end should always know how to lower his bitrate settings so that my server can keep up under such special circumstances. It’s just not very smooth.
Would also use this a ton, just winding up on hotel/airport wifi of varying qualities, it’s annoying to have to keep trying to back my settings down notch by notch to find one that’s sustainable.
Perhaps a bandwidth check before starting a stream, or when initially connecting to a server to at least baseline available throughput and auto select a suggested stream quality.