使用Gstreamer和Node.js的Live Stream h.264video到客户端网页

我想利用下面的例子来接受多个摄像头并stream入客户端网页。

https://delog.wordpress.com/2011/04/26/stream-live-webm-video-to-browser-using-node-js-and-gstreamer/

这里的参考是我的gstreamer命令:

gst-launch-1.0 -ve \ videotestsrc is-live = true! video / x-raw,width = 640,width = 480,framerate = 10/1! timeoverlay! 排队! videoconvert! vaapih264enc! h264parse! 排队! matroskamux streamable = true! 队列leaky = 2! tcpserversink port = 9001 host = 127.0.0.1 recover-policy = keyframe sync-method = latest-keyframe \ videotestsrc is-live = true! video / x-raw,width = 640,width = 480,framerate = 10/1! timeoverlay! 排队! videoconvert! vaapih264enc! h264parse! 排队! matroskamux streamable = true! 队列leaky = 2! tcpserversink port = 9002 host = 127.0.0.1 recover-policy = keyframe sync-method = latest-keyframe \

两台摄像机stream入端口9001和9002。

大部分工作发生在app.get()函数中。 我怎样才能修改这个来处理多个套接字。

var express = require('express') var app = express(); var http = require('http') var httpServer = http.createServer(app); app.get('/', function (req, res) { var date = new Date(); res.writeHead(200, { 'Date': date.toUTCString(), 'Connection': 'close', 'Cache-Control': 'private', 'Content-Type': 'video/webm', //'Content-Type': video/x-matroska, 'Server': 'CustomStreamer/0.0.1', }); var net = require('net'); var socket = net.connect(9001, function () { socket.on('close', function (had_error) { res.end(); }); socket.on('data', function (data) { res.write(data); }); }); socket.on('error', function (error) { console.log(error); }); }); console.log("Server listening on port.... 8001"); httpServer.listen(8001); 

谢谢!

更新:创build另一个套接字,我能够从两个不同的套接字获取数据。 有可能是一个更聪明的方法来做到这一点,但现在我重复套接字代码,将它们命名为套接字1和套接字2,并使用打印语句,我觉得我有信心从两个相机抓取数据,现在我需要链接video到我的.html文件。

 var socket1 = net.connect(9001, function () { socket1.on('close', function (had_error) { res.end(); }); socket1.on('data', function (data) { res.write(data); }); }); var socket2 = net.connect(9001, function () { socket2.on('close', function (had_error) { res.end(); }); socket2.on('data', function (data) { res.write(data); }); }); socket1.on('error', function (error) { console.log(error); }); socket2.on('error', function (error) { console.log(error); }); 

Interesting Posts