|
Been a while since I posted here, eh? As it happens, I've been deeply
engrossed in a little toy that grew into a real project.
I've always been disappointed in the lack of decent streaming webcam
software. Everyone and their dog has written a "grab an image and FTP it
somewhere" app, usually complete with a crappy, useless GUI. (All you
people who remember Cyclops are nodding your heads and thinking, "Yeah
Nathan, you're one to criticise crappy webcam servers.") Some people go so
far as to write a custom Java/ActiveX applet to pull down images real
fast for kind of a redneck "streaming" effect. (Carson calls this
"faux streaming".) The closest I've seen to live video is the HTTP
multipart/jpeg streaming implemented by camserv and the Axis network
cameras. This works, to some extent, but there's just something
repulsive about shovelling JPEGs down a TCP socket as fast as possible and
calling it "live video".
Come on, people! For decades we've had video compression techniques
that are specifically designed to push live video down small pipes. And
protocols for streaming real-time multimedia over IP networks have been
standardized for over 10 years. The folks lucky enough to have multicast
IP access have been holding multi-user video conferences since before most
of the world had even heard the word "Internet". So why on Earth
should we put up with the equivalent of mailing Grandma a stack of
Polariods and telling her to flip through them really fast?
Before you say anything, don't give me that "widest possible audience"
crap. I know you want your webcam to be accessible to anybody with
a web browser, but how many people do you know who don't have QuickTime
installed? Seriously, everybody who didn't have QuickTime installed
already went and installed it to watch the Lord of the Rings trailer. And
if they didn't care about the LotR trailer, they don't deserve to watch
your webcam anyway.
OK, so where was I? Right—my point was that we already have the
technology, standards, infrastructure, and most importantly the viewing
software in place to start feeding people quality live video from our homes
and offices. All we need is the server software. So, properly motivated
by such an obvious need, I wrote
some.
Spook is my attempt at a decent live streaming video solution. It
captures video from Firewire cameras, compresses it to MPEG4 with XviD, and
streams it (via unicast, no multicast required) to anybody who asks for it
using RTSP. The result: true live video at 30 frames per
second with a resolution of 320x240. In half the upstream bandwidth of
the average cable modem. Now that is what I'm talking
about.
Today was the first release of Spook. It only supports Firewire cameras
for the moment, so I'm sure I'll get a few more folks interested once I
support Video4Linux and all the TV capture cards and USB webcams it brings.
The problem with V4L is that configuration for each camera chipset is
different, so it may be a bear to support configuration of FPS and all
that. I'll find out soon, I guess.
|