我试图通过socket.io和套接字帮助我的node.js服务器创建一个摄像头视频流。 IO-流。错误视频流socket.io + socket.io流(超过最大调用堆栈大小)
我想在/ camera中捕捉视频,用视频打开一个流槽socket.io(在socket.io-stream的帮助下),并在索引url上接收它。
当我连接到服务器槽/摄像头,并因此启动流时,服务器崩溃并出现错误“RangeError:Maximum call stack size exceeded”。
错误似乎来自“/node_modules/socket.io/node_modules/has-binary/index.js:48:23”。
在这些示例中,我省去了大部分的任意代码,因为服务器/连接在传输数据snippits时工作正常。
这里是我的当前设置:
服务器:
io.on('connection', function(socket) {
ioStream(socket).on('videoStream', function(stream, data) {
socket.broadcast.emit('videoStream', stream);
});
});
相机
window.glob_socket = io();
var video = document.getElementById('camera');
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
if (navigator.getUserMedia) {
navigator.getUserMedia({
audio: false,
video: {
width: 320,
height: 240
}
}, function(videoStream) {
// Local preview
video.src = window.URL.createObjectURL(videoStream);
video.onloadedmetadata = function(e) {
video.play();
};
// Stream
var stream = ss.createStream();
ss(glob_socket).emit('videoStream', stream, videoStream);
fs.createReadStream(videoStream).pipe(stream);
}, function(err) {
console.log("The following error occurred: " + err.name);
});
} else {
console.log("getUserMedia not supported");
}
指数
var video = document.getElementById('camera');
ss(glob_socket).on('videoStream', function(stream) {
video.src = window.URL.createObjectURL(stream);
video.onloadedmetadata = function(e) {
video.play();
};
});
我无法测试的服务器/索引服务器崩溃的代码时,相机开始流。
任何人都有一个想法这里有什么问题?
谢谢!认为这有点奇怪,没有视频流演示。 –
@IbeVanmeenen如果你不介意我会问,你是如何解决它请分享你的经验与我几乎完全相同的问题? –
@ASahra,不幸的是,我没有进一步与这个项目,所以我没有解决方案。但我确实会去WebRTC连接(也许http://socket.io/blog/socket-io-p2p/会工作)。 –