【发布时间】:2016-02-05 10:52:07
【问题描述】:
我正在尝试在 socket.io 和 socket.io-stream 的帮助下通过我的 node.js 服务器创建一个网络摄像头视频流。
我想在 /camera 中捕获视频,通过 socket.io(在 socket.io-stream 的帮助下)打开一个带有视频的流,并在索引 url 上接收它。
当我通过 /camera 连接到服务器并因此启动流时,服务器崩溃并出现错误“RangeError:超出最大调用堆栈大小”。
错误似乎来自“/node_modules/socket.io/node_modules/has-binary/index.js:48:23”。
在示例中,我省略了大部分任意代码,因为服务器/连接在传输数据片段时工作正常。
这是我目前的设置:
服务器:
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();
};
});
我无法测试服务器/索引上的代码,因为当相机启动流时服务器崩溃。
有人知道这里出了什么问题吗?
【问题讨论】:
标签: node.js socket.io video-streaming webrtc