Broadcast a live webcam stream

I want to record my webcam and broadcast the stream in live to other clients.

I can easily show my webcam in a video tag in the same page with something like that:

function initialize() {
  video = $("#v")[0];
  width = video.width;
  height = video.height;

  var canvas = $("#c")[0];
  context = canvas.getContext("2d");

  nav.getUserMedia({video: true}, startStream, function () {});
}

function startStream(stream) {
  video.src = URL.createObjectURL(stream);
  video.play();

  requestAnimationFrame(draw);
}

function draw() {
  var frame = readFrame();

  if (frame) {
    replaceGreen(frame.data);
    context.putImageData(frame, 0, 0);
  }

  requestAnimationFrame(draw);
}

function readFrame() {
  try {
    context.drawImage(video, 0, 0, width, height);
  } catch (e) {
    return null;
  }

  return context.getImageData(0, 0, width, height);
}

But how to send that stream to a server, do some image processing and then brodcast to other clients?

Is nodejs the best way? Do you have some readings/libs to recommend me?

There are currently several working drafts on this but I think currently the best way to broadcast a live video in a browser is to use Flash ActionScript. Of course, the clients will still need to install a plugin to run the app in the browser. Note that you can't use the Apache web server to broadcast the live videos in that case. You will need a media server such as Red5(free), Wowza, or Adobe Media Server.

Also, see if you can find some help here:

'WebRTC (where RTC stands for Real-Time Communications) is a technology that enables audio/video streaming and data sharing between browser clients (peers). As a set of standards, WebRTC provides any browser with the ability to share application data and perform teleconferencing peer to peer, without the need to install plug-ins or third-party software. '