Okay, so this kind of works... (maybe try refreshing)

webcam image
webcam image

The goal here is to broadcast video from my laptop, for 1-N video conferencing. This turns out to be hard.

What you're seeing here is basically the MJPEG stream from my Quickcam Communicate MP, sent over HTTP as "multipart/x-mixed-replace", by mjpg-streamer, on my Ubuntu 8.10 Dell Latitude D810.

... and then relayed through a server running mjpeg-relay

Nice things about this approach

  1. minimal latency (when the network is okay)
  2. works directly in most browsers (no plugins or anything needed)
  3. very low CPU load on servers (my laptop stays at 800MHz, and the streamer is using < 1% of the CPU)
  4. picture quality is decent

Bad things about this approach

  1. sometimes latency gets bad. at 640x480 I see ~2s lag. at 320x240 it's negligable, sometimes. Sometimes I need to go down to 240x180 15fps.
  2. MJPEG compression ratio is poor (maybe 10 times worse than MPEG-4)

In part because mjpeg's are so poorly compressed, it's important to have a splitter-relay with good upstream connectivity, if you don't have it yourself. For this I wrote mjpeg_relay.

Ideally we'd like to be sending an MPEG-4 stream which browsers could view (perhaps with flash), in variable quality, and with low latency. And maybe even with syncronized sound. But this looks to require some software I don't have.... Folks out there offering such a service? "stickam" is one. "paltalk" is another. maybe "spontania". probably "mebeam" (NSFW). I didn't really get any of them to work, though....