In combination with my presentation on Streaming Media on the Web given to Columbus Digital last night, I figured I’d provide a high-level overview of how streaming media works on the web. I’m very intentionally trying to write this for a non-technical audience, so please provide feedback if I get a little too dense.
There are, in essence, three different ways to consume media on the internet. This is regardless of what kind it is- a solution that would work for sound will also work for video and vice-versa. While technical implementation may limit the formats you can broadcast, those choices are usually made well after the project requirements have been set.
The first is Progressive Download. This is the easiest and the one you’re most likely to encounter in your day to day life, and will also be the cheapest for you to implement. In essence, you copy a video file and a player out onto a normal web server, and when a user loads the page with the player, that player will start to download the video and begin playing it as soon as it has enough to ensure a continuous stream.
The advantages are many. First, it’s easy to do- dozens of prepackaged players exist, and encoders are pretty easy to find as well. In some cases, you don’t even need a player- quicktime will play directly in your browser as long as you have the plugin. The downside is that your video is available for anyone and everyone to download and, presumably, rebroadcast on their own servers.
If you’re working on a viral campaign this is actually an advantage, but in most cases it’s probably not- who knows how some enterprising individual will mashup your video, right?
Server Based Streaming
The second method is server-based streaming. Rather than using a single web server, you’re now using two: A web server for your player, and a streaming server for your media. The user experience is practically identical- all changes happen under the hood as the user is only receiving the part of the media they’re currently watching. Once a particular second has been consumed, it’s discarded.
The advantages of this method are several: First, it’s a lot easier to detect how fast your client’s connection is, so you can provide them a smaller file that will still give them a good user experience. Secondly it is more secure- your user can’t really save the media without a third-party program, and those fail if you encrypt your stream. Thirdly, you can publish live media streams with this method- concerts, conventions, presentations and the like are now all accessible in real time.
Unfortunately this method isn’t exactly cheap… if done in house. It usually means a new server, server software that will cost thousands, and a developer who knows how to set up and maintain your server. To keep costs low you can contract with a media hosting company that already has the hardware and software set up. The free ones include Vimeo and Youtube, though they limit you to certain players and encryption is usually not available.
Peer to Peer Streaming
This method is (surprise surprise) very popular in the adult industry, but is also used for more common applications like Skype. The role of the server is cut out almost completely in this, as we instead broadcast media directly from one user to another.
The nice thing about this is that you can have a high-quality person-to-person interaction without paying an arm and a leg for bandwidth.
The disadvantages are largely experience related, since one of your users must act as the media publisher via a camera, microphone, or pre-downloaded file. That user will then be limited to how many people they can broadcast to simultaneously by how fast their internet connection is.
Strategies for Selection
Given the above, choosing a media streaming approach is relatively easy. The default is progressive download- if you don’t have a lot of media and don’t need anything encrypted or fancy, just go with that. If that’s not enough for you, decide whether you need a live feed: If not, use a streaming server.
After this things get a little trickier, because live media may be broadcast in many forms. The rule of thumb I use is as follows: If the number of consumers of a single media stream exceed the number of streams that can be provided at the highest bitrate given the internet connection, use a streaming server.
- The Democratic National Convention
Single source of video, many users: Server Based Streaming
Many sources of video, many users: Progressive download or Server Based Streaming (I recommend the latter based on scale).
Many individual audio files, must be secured from copying: Streaming server
- Amazon.com Album Previews
Many individual audio clips: Progressive download
- Customer service training video (internal)
Lives on internal network, not live, single video: Progressive download.
- Internet Phone
Thousands of sources, thousands of consumers: Peer to Peer.
I hope this guide was helpful. If you have any additional questions, don’t hesitate to put them in the comments.