|
I get a lot of IM's and emails asking me how I pull these broadcasts off, why I do them, etc. Rather than
answer them all individually, I figure I might as well just give everybody a run down right here.
A while back, I picked up an EVDO (EVolution Data Optimized) card for my primary internet connection at home.
I live way out in the middle of nowhere, and I don't have - nor will I ever have - DSL or cable. There is one
802.11 wireless provider in the area, but the closest tower is 6 miles away, and blocked by trees. Sattelite is
available, but it's not appropriate for my needs for a variety of reasons, including the lack of support for IPSec
VPN tunnels, spotty reliability, and restrictive Fair Access Policy (FAP) limits. So needing something a little
more reliable (and faster), I contacted Embarq (my local phone provider) and ordered up EVDO service.
The service uses the cellular network to carry data at broadband speeds. In my case, it's EVDO rev 0 and the
infrastructure is actually owned and maintained by Sprint. Embarq simply resells it. Speeds are dependent on a variety
of factors including (but not limited to)distance from the tower, weather conditions, and congestion. Here at the house,
it's usually around 1Mbit down, and 100kbit up. It's about as fast as a slow DSL connection.
With my new internet connection all set up and working, it quickly occured to me that I had broadband internet access
pretty much anywhere I could get a signal on the Sprint network. The wheels in my head started turning, and I thought
"You know what would be cool? Broadcasting live video from my car". It just kind of took off from there. I'm still amazed
at how many bored people will actually watch me run errands, or BBQ out back. ;-)
Enough with the history lesson.
Broadcasting live video to hundreds of people simultaneously while mobile is a bit of a challenge. There isn't much bandwidth
to work with, and what little is available varies a lot. The stream needs to be at the lowest bitrate possible, while
maintaining a reasonable picture and audio quality. Making the process even more difficult, is the fact that there's only
enough bandwidth on the EVDO connection to support one viewer. It isn't much fun restricting access to one lonely viewer, so
it's obvious that we need to get creative.
Enter: Windows Media Services
The basic idea, is to stream the video to a publicly accessible server on the internet with a lot of bandwidth. We want
clients to connect to that server, rather than directly to my laptop. To do this, Windows Media Services was installed on a
dedicated Windows 2003 Enterprise Edition server I lease. This is what you guys are actually connecting to. On my laptop, I'm
running Windows Media Encoder 9 series. This is the software that takes the audio/video signal from my cameras, encodes it, and
sends it to the server. This way, I only need enough bandwidth to send *one* stream out. Once it gets to my server, it can be
re-broadcast to as many people as I'd like there to be.
For a while, I was using a Microsoft USB webcam for the video. It was cheap, and it worked. Recently though, some limitations of
this approach have started to surface. A webcam like this is designed to be...well...a webcam. You stick it on your laptop, and
use it to talk to your friends, or what have you. It has a narrow field of view and is very problematic when used outdoors.
This really came to a head recently, while I was doing a broadcast driving east into the rising sun. The camera would not
automatically adjust the exposure and as a result, the picture was completely washed out. I had the same problem when I returned
home later in the day, this time driving west into the setting sun. Having to limit broadcasts to the noon day sun, or
north/south routes kinda sucks, you know? The camera has other problems. It's difficult to mount in a vehicle, and the focus must be
manually adjusted. Remember, it's intended to be used by a person sitting next to their computer.
To remedy this, I decided that I would be better served with an actual video camera. A real video camera will automatically adjust it's
focus, exposure levels, etc. The image quality is superior, as well. An easy way to do this, is to use a modern digital camcorder. It
can be connected to the laptop via firewire and accessible to any Windows application capable of capturing video (like the Windows
Media Encoder). I have such a camera, but it's an expensive one, and I'm not too crazy about leaving it in my car, or disconnecting it
when my wife wants to take home movies, or what have you. I had an old Panasonic camcorder laying around, so I decided to use that.
The challenge inherent in using an old analog camera, is that it can't be directly plugged into my laptop. To remedy this, I needed a device
that would accept analog audio/video inputs, digitize them and send them to the computer over the USB port, where it would be seen by
Windows Media Encoder. A quick trip to Best Buy, and I found the solution in a Pinnacle DVC100 for about $50. Problem solved. It's actually
marketed and sold to consumers as a way to transfer home movies onto DVD. It comes with a bunch of cheesy software to this end, which I
promptly discarded. ;-)
That's pretty much it, short of going into the actual configuration parameters for the various components of the solution.
|