Sử dụng Chuyển động trên Linux, mỗi webcam được phân phối dưới dạng luồng trên cổng của riêng nó. Bây giờ tôi muốn phân phát các luồng đó, tất cả trên cùng một cổng, bằng cách sử dụng Node.js.Đóng luồng luồng MJPEG qua proxy Node.js
- Chỉnh sửa: Giải pháp này hiện hoạt động. Tôi cần để có được những chuỗi ranh giới từ dòng mjpeg gốc (đó là "BoundaryString" in Motion cấu hình của tôi)
app.get('/motion', function(req, res) {
var boundary = "BoundaryString";
var options = {
// host to forward to
host: '192.168.1.2',
// port to forward to
port: 8302,
// path to forward to
path: '/',
// request method
method: 'GET',
// headers to send
headers: req.headers
};
var creq = http.request(options, function(cres) {
res.setHeader('Content-Type', 'multipart/x-mixed-replace;boundary="' + boundary + '"');
res.setHeader('Connection', 'close');
res.setHeader('Pragma', 'no-cache');
res.setHeader('Cache-Control', 'no-cache, private');
res.setHeader('Expires', 0);
res.setHeader('Max-Age', 0);
// wait for data
cres.on('data', function(chunk){
res.write(chunk);
});
cres.on('close', function(){
// closed, let's end client request as well
res.writeHead(cres.statusCode);
res.end();
});
}).on('error', function(e) {
// we got an error, return 500 error to client and log error
console.log(e.message);
res.writeHead(500);
res.end();
});
creq.end();
});
tôi sẽ nghĩ rằng đây phục vụ lên dòng mjpeg tại 192.168.1.2:8302 như/chuyển động , Nhưng nó không. Có thể vì nó không bao giờ kết thúc và ví dụ proxy này không thực sự là một ví dụ truyền trực tuyến?
Bạn có thể xem bằng cách sử dụng nginx thay thế. – david
Nó cần phải là một giải pháp nút – skerit