mirror of http://git.sublab.org/mjpegplexer/
Relay control signals
This commit is contained in:
parent
2f6e8a407e
commit
573a798156
|
@ -1,2 +1,14 @@
|
||||||
<h1>Hello, World!</h1>
|
<!DOCTYPE html>
|
||||||
<img src="../stream.mjpeg"></img>
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8"></meta>
|
||||||
|
<script src="main.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<img src="../stream.mjpeg"></img><br/>
|
||||||
|
<input type="submit" value="<" id="left"></input>
|
||||||
|
<input type="submit" value="A" id="up"></input>
|
||||||
|
<input type="submit" value="V" id="down"></input>
|
||||||
|
<input type="submit" value=">" id="right"></input>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
57
server.js
57
server.js
|
@ -1,15 +1,24 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
var express = require('express');
|
var express = require('express');
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
|
var request = require('request');
|
||||||
var MjpegProxy = require('mjpeg-proxy').MjpegProxy;
|
var MjpegProxy = require('mjpeg-proxy').MjpegProxy;
|
||||||
|
|
||||||
var app = express();
|
var app = express();
|
||||||
|
|
||||||
var cameras = [
|
var cameras = [
|
||||||
{
|
{
|
||||||
url: 'http://admin:123456@192.168.0.117/videostream.cgi?rate=1'
|
baseurl: 'http://admin:123456@192.168.0.33',
|
||||||
|
model: 'conceptronic'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
url: 'http://admin:123456@192.168.0.178/videostream.cgi?rate=1'
|
baseurl: 'http://admin:123456@192.168.0.117',
|
||||||
|
model: 'conceptronic'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: 'http://admin:123456@192.168.0.178',
|
||||||
|
model: 'conceptronic'
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -18,12 +27,52 @@ var still_frames = [
|
||||||
fs.readFileSync(__dirname + '/noise2.jpg'),
|
fs.readFileSync(__dirname + '/noise2.jpg'),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
function SimpleProxy(url) {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
self.url = url;
|
||||||
|
self.handle_request = function(req, res) {
|
||||||
|
console.log('Got request. Forwarding to ' + self.url);
|
||||||
|
request(self.url).pipe(res);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
for (var camera_idx in cameras) {
|
for (var camera_idx in cameras) {
|
||||||
var camera = cameras[camera_idx];
|
var camera = cameras[camera_idx];
|
||||||
camera.proxy = new MjpegProxy(camera.url, still_frames)
|
var urls = {};
|
||||||
|
|
||||||
|
if (camera.model == 'conceptronic') {
|
||||||
|
urls.mjpeg = camera.baseurl + '/videostream.cgi?rate=1';
|
||||||
|
urls.down = camera.baseurl
|
||||||
|
+ '/decoder_control.cgi?onestep=1&command=0';
|
||||||
|
urls.up = camera.baseurl
|
||||||
|
+ '/decoder_control.cgi?onestep=1&command=2';
|
||||||
|
urls.right = camera.baseurl
|
||||||
|
+ '/decoder_control.cgi?onestep=1&command=4';
|
||||||
|
urls.left = camera.baseurl
|
||||||
|
+ '/decoder_control.cgi?onestep=1&command=6';
|
||||||
|
urls.snapshot = camera.baseurl + '/snapshot.cgi';
|
||||||
|
} else if (camera.model == 'mjpegplexer') {
|
||||||
|
urls.mjpeg = camera.baseurl + '/stream.mjpeg';
|
||||||
|
urls.down = camera.baseurl + '/control/down';
|
||||||
|
urls.up = camera.baseurl + '/control/up';
|
||||||
|
urls.right = camera.baseurl + '/control/right';
|
||||||
|
urls.left = camera.baseurl + '/control/left';
|
||||||
|
urls.snapshow = camera.baseurl + '/snapshot.jpg';
|
||||||
|
};
|
||||||
|
|
||||||
|
camera.proxy = new MjpegProxy(urls.mjpeg, still_frames);
|
||||||
app.get('/cam/' + camera_idx + '/stream.mjpeg', camera.proxy.proxyRequest);
|
app.get('/cam/' + camera_idx + '/stream.mjpeg', camera.proxy.proxyRequest);
|
||||||
|
for (var url in urls) {
|
||||||
|
if (url == 'mjpeg' || url == 'snapshot')
|
||||||
|
continue;
|
||||||
|
app.get('/cam/' + camera_idx + '/control/' + url,
|
||||||
|
new SimpleProxy(urls[url]).handle_request);
|
||||||
|
}
|
||||||
|
app.get('/cam/' + camera_idx + '/snapshot.jpg',
|
||||||
|
new SimpleProxy(urls.snapshot).handle_request);
|
||||||
app.use('/cam/' + camera_idx + '/browse',
|
app.use('/cam/' + camera_idx + '/browse',
|
||||||
express.static(__dirname + '/cam_public'));
|
express.static(__dirname + '/cam_public'));
|
||||||
}
|
}
|
||||||
|
|
||||||
app.get('/blackout', function(req, res) {
|
app.get('/blackout', function(req, res) {
|
||||||
|
|
Loading…
Reference in New Issue