There are basically two ways that you get video online. One is streaming which is ‘online’ in that the bits are immediately scurried up the networking layers to the application layer for demux and display. The other is the more familiar downloading which is closer to ‘offline’ in that the data is buffered anywhere from a small part to the whole video. Streaming sucks and downloading FTW.
Streams in an ideal world
In an ideal world streams work okay. There is low enough latency and enough throughput on the network that transporting in a stream is basically indistinguishable from downloading. Currently this kind of service can be found in intranets, Internet II, and if you’re paying probably at least $150/month (okay, maybe $80/month) for a connection.
You basically want to use streaming iff (you only want to use the connection you’re on for that OR the stream is small enough PER PACKET that any other traffic (will not be delayed OR delay doesn’t matter))
That’s seldom the case, so more times than not you want to use a download architecture.
Corps want to use Streams
It’s in the corporate, pro-excessive-intellectual-property-whoring agenda to use Streams. They are harder to capture and redistribute (particularly when encapsulated to that end). They also have the perks of being ‘instant on’ such that the average joe can click and immediately begin watching. This is heavily favored in a world where joe might decide to do something else if you don’t give him what he wants now.
It’s one of the reasons for the net neutrality debacle. Corporations want to send giant streams on-demand to the customer with assured quality. Other corporations want to charge for that privilege. Still other corporations and individuals want all data to be treated blindly. It’s not part of the internetworking architecture for routers and routes to know much less care what is on their wires. They’re just supposed to ship it as they get it. They’re supposed to attempt to ship it, rather. If it gets lost or they can’t ship it they should send back an Internet Control Message saying why, if they can.
Local is better
Unless your network is fictional there’s a high probability that the data on your hard drive is a faster access than on the wire. That being the case, any operation on a video will be faster from the buffer than sending a request and waiting for that data.
Pause? If you’re watching a downloaded or downloading video no problem. If you’re watching a stream then everything already sent just gets chucked (or if you’re lucky buffered), but once the buffer is full you’re either eating away from what you just watched or not getting any more data.
Rewind? If you’re lucky there’s still some of the old data in the buffer.
Fast forward? All that was sent intervening probably gets dropped as the buffer fills with the new time-frames.
With downloading you keep all that data and if you pause the future data keeps coming with no problem.
But the main point about downloading is that you don’t need the data to be fetched WHILE you download it. There was assuredly some point in the past that you could have gotten the data and now is just when you want to watch it. The exception is a live event, and the caveat is that you may not have known you wanted to watch it until just now.
And that’s where the motivation for things like my upcoming bookstack extension come in.
“Right Now” isn’t as big of a deal as you think it is
Just because you want something right now doesn’t mean you can have it right now. This is a lesson we all know from birth onward. Crying in our cribs, we wanted something NOW. We wanted our asses cleaned or we wanted milk or to burp or attention. But no matter how fast our parents were they were not instantaneous.
If you want “leisure” right now then there can be a stack of leisure available to you. If you want intellectually stimulating, a stack. And so on. My extension focuses on (for now) just making one stack with all the links you encountered and said, “I want to look at that maybe, but right now I’m just gathering stuff to look at,” or, “I’m in the middle of this and someone has sent me this link and I don’t want to fool with it NOW, so I put it in a LATER folder that handles it for me NOW.”
With video online the goal is like Netflix. You say now that you want the complete series of Mr. Belvedere in your Netflix queue and later you get it in the mail and watch it. Right now you can say you want to watch the latest webisode of Cooking With Backbone Routers and at any point after it’s done downloading you can watch it.
Allocation is the key
The main gap to fill is in allocating the connection properly. If there’s nothing on it you can take it all. If someone joins then you should throttle back to accommodate. If there’s enough on it then new folks should be queued up and wait for the resource. The traffic should coexist peacefully and one of the main steps towards that is that for static data that isn’t needed NOW it can be deferred (or preemptively grabbed, preferably). There’s plenty of time when the wire sits silent and that’s the perfect time to be grabbing what will clog it later.
Anyway, just some thoughts about the stupidity of streaming video (of non-live events).