_A stalker of IP cameras_
What is this?
A high performance web proxy for serving MJPG streams to the masses.
IPCamera (1) <-> (1) Paparazzo.js (1) <-> (N) Users
IP cameras can't handle web traffic
IP cameras are slow devices that can't handle a regular amount of web traffic. So if you plan to go public with an IP camera you have the following options:
Server side
# Initialize
# Basic auth http://en.wikipedia.org/wiki/Basic_access_authentication
auth = 'Basic ' + new Buffer('user:secret').toString('base64')
# Same parameters as http.get http://nodejs.org/docs/v0.6.0/api/http.html#http.get
paparazzo = new Paparazzo
host: 'camera.dyndns.org'
port: 1881
path: '/mjpg/video.mjpg'
headers: { 'Authorization': auth }
paparazzo.on "update", (image) =>
console.log "Downloaded #{image.length} bytes"
paparazzo.on 'error', (error) =>
console.log "Error: #{error.message}"
paparazzo.start()
# Serve image
# Take a look at server.coffee
Client side
You can simulate MJPG streaming by requesting new images on a specific interval. Appending a random parameter avoids caching.
// JavaScript example using jQuery
// Active camera will refresh every 2 seconds
var TIMEOUT = 2000;
var refreshInterval = setInterval(function() {
var random = Math.floor(Math.random() * Math.pow(2, 31));
$('img#camera').attr('src', 'http://localhost:3000/camera?i=' + random);
}, TIMEOUT);
<!-- In your HTML output -->
<img src='' id='camera' />
$ make run
For a list of tested cameras check "List of tested cameras" in the wiki section.
Upcoming features
TODO
License
Author: Rodolfo Wilhelmy, AMA on Twitter [@rodowi](https://twitter.com/rodowi)