Cloud DVR is not DVR - how to fix that
One of the most useful consumer electronic devices of the past two decades is the DVR, pioneered by TiVo. Many people imagined a hard-disk based video recorder before that, but they showed the way.
Since then, bandwidth has reached the level where streaming is practical, and I have "cut the cord" on cable/satellite -- more about that in some other posts. A variant of streaming is called "cloud DVR" -- in effect, you request a "recording" of a program you wish to watch that is stored in the cloud and streamed to you. In a few cases, there is actually a server making a recording for you, but usually it's just saving a pointer to a pre-stored stream.
Either way, there is a problem. Streaming isn't nearly as pleasant for some types of content compared to playing a local copy. The difference is most clear in content that you will fast forward and rewind in, which includes programs with commercials and sports -- particularly things like the upcoming Olympics which are usually watched on delay.
There are a few other disadvantages, such as the way streaming fails, buffers or downgrades quality when there are issues with your internet connection.
More and more people have very high speed (>20 megabit) connections and storage is very cheap, so it doesn't have to be this way. Unfortunately, use #1, skipping commercials, is not popular with the broadcasters who use them. I am happy to pay extra for commercial-free content, but not everybody is, and it is often not offered at a reasonable price. Worse, many streaming services actually force you to watch constantly repeated commercials (because they are not selling to enough clients) and allow fast forward within the program, but not the ads.
What steps could be taken to make streaming match local storage for quality? The most obvious is a large cache, so the programs you are most likely to watch soon are stored locally. Most people have a pattern on when they watch certain programs so decent guesses can be made. This does waste a bit of bandwidth on programs that are cached but not watched in time, but it's really only a moderate amount of waste.
When you start watching a program that is not in cache, people on faster connections should immediately start downloading the rest. With a fast connection, if you don't want to fast forward right away, this will work. Unfortunately one popular reason to fast forward is to "get to where I left off watching this" if you didn't watch it through the same service. (Then it should just know where to start playing.)
The player can also cache just enough information to fast-forward. For example, it can pre-download an "i-frame" (complete video frame) every few seconds, to allow a seamless fast forward or menu-based fast forward (where you see a grid of frames and navigate to the one you want.) This is OK, but still not enough for sports, where you need truly responsive seeking.
I find the Olympics entirely unbearable on live TV or basic streaming. It's not just the commercials -- there are so many time-gaps between the action. There are also a lot of events that are time trials and which need fast forward even in the boring parts of the action. You need very precise navigation -- you must not go too far into spoilers, and you want to see the less interesting parts and still glean something from them.
One thing I like to do in MythTV is play content sped up, with the audio pitch adjusted. You can watch many things at 1.5x normal speed. Everybody is talking fast, but in some cases there is not much important talking. I have not seen this in any streaming service, though they could implement it, but would have a harder time with instant switching between 1x, 1.5x, and smooth 3x and 5x without sound, which is another speed I like to use for sports.
The effect is dramatic. Depending on the night, I can get through 4 hours of NBC Prime Time in an hour, with a focus on just what I want to watch. That's no minor improvement.
The simplest thing to implement in players would be a cache (the customer could put in a USB stick or SD card for this, they are low cost and fast enough for this) with manual tagging for cache choice, and simple opportunistic cache, as well as cache when programs start. A more advanced system would study the viewer's patterns of watching to figure out the most effective things to cache.