Besides, the decoding/sync/rendering part didn't really change in the last 10 years, the innovations mostly arrived from the Web streaming use cases, with adaptive bitrate formats, that partly solved the multi-devices streaming problem we started to have with the rise of Mobile and OTT (over-the-top) video streaming.
Related gripe: WTH is there no full-track buffering mode for any web players (looking at You, Tube!) and apps like Pandora or Spotify, for low- or sparse- bandwidth travel?!
I don't care if you limit it geographically or only make it work with bandwidth throttling or whatever...
...just make it work.
Then your apps would work and I would not be cursing and throwing my phone out the window every road trip.
This is costing me a fortune in phones.
1) Video provider pays for bytes sent to the user that are not used. If the cache policy is "cache the whole thing", you would find yourself paying (a guestimate) 2x for bandwidth. This is because most people do not watch even nearly the entirety of every video that they start loading.
2) Using server bandwidth for bytes that are not used. This increases contention for bandwidth at the origin. Perhaps less of an issue if your site is small and you're using a giant CDN. This does become an issue if you are youtube or you are serving the bytes yourself.
3) Using client bandwidth for bytes that are not used. This slows down any other download that might be happening on the client computer, even when the video is paused. This could be, a different video in a different tab that the user is trying to watch, other assets on the page, other pages, or even other programs on the computer.
Of course adding an option for the user to cache the whole thing wouldn't be so bad, as opposed to having this behavior by default for everyone.
OTOH, China has an awesome "who cares about gwailo IP" progressive IP policy which allows you to stream lots of copyrighted stuff instantly via multiple domestic providers. Hell, new TVs have this sort of thing built in! It's awesome for Hollywood crap, just not the content (eg. EU / art-house films) or type (eg. documentaries) that I am typically looking for. Then again we have torrents...
Somewhere, somehow, the internet finds a way. When all is said and done, it's only people who are scared, stupid or spendthrift that pay... or those who want the authentic cinema experience, collect media, or are commercial operations that need to worry about legal challenges.
A few years ago I actually used to live in Hollywood and London working for a big DRM-based video solutions provider that did work for literally most of the world's major mobile device manufacturers. Boring, but a great insight in to how corrupt the industry is. (Very)
a) the complete current song, and ideally
b) the complete next song
Except in game over insufficient bandwidth full stop scenarios, natch.
I would imagine the most user-friendly version of this would be to start playback using as soon as there is a conventional "sufficient buffer," but to be much more aggressive about sucking every possible byte to maintain the above caching...
Personally I would solve the 'very long delay before play' problem by defaulting to the 80% case of playing one of N songs from the last used playlist/station, _as cached locally from last play_. (Maybe not simply the most recently played, maybe the highest ranked, least skipped, whatever...)
That wouldn't help with people who are flipping stations, but my road trip case would be sudden bliss... no more constant drop-outs.
Disclosure: part of my problem is no doubt sticking with Sprint because I don't want to lose unlimited (sic) data. :P
- Actually, and quite surprisingly, the "cache everything" mode only adds around 25% of used bandwidth in practice. But even 25% is already a big difference if you pay 10 or 50K of CDN bills per month.
- Indeed useless bytes download can create overall congestion brings harm to the network in general, and should be avoided. It's especially true for websites that don't have the money to pay big CDNs and stream with dedicated server with limited capacity.
And most of the new modern video players support adaptive bitrate streaming, that adapts the quality to your network conditions. Of course if you want to stream 4K video on 2G, you won't be able to do it today, but in that case it's probably easier to download the mp4 file directly
So, they choose to save the bandwidth.
Today the major broacasters often have 6 or 7 different qualities, going from 300kbps up to 4000Mbps for HD.