我試圖通過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/會工作)。 –