-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcapture.js
68 lines (63 loc) · 1.92 KB
/
capture.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
var vllaWidth = 60;
var vllaHeight = 32;
var captureFPS = 30;
var streaming = false;
var videoElement;
var canvasElement;
var canvasContext;
var needsInit = true;
function init() {
if (needsInit){
videoElement = document.createElement("video");
document.body.appendChild(videoElement);
canvasElement = document.createElement("canvas");
canvasElement.width = vllaWidth;
canvasElement.height = vllaHeight;
document.body.appendChild(canvasElement);
canvasContext = canvasElement.getContext("2d");
needsInit = false;
}
}
chrome.browserAction.onClicked.addListener(function(tab) {
if(streaming === false){
chrome.desktopCapture.chooseDesktopMedia(["screen", "window", "tab"], null, function(streamID){
navigator.mediaDevices.getUserMedia({
audio: false,
video: {
mandatory: {
chromeMediaSource: 'desktop',
chromeMediaSourceId: streamID
}
}
}).then(function(screenStream) {
init();
connectVlla();
window.ss = screenStream;
// console.log("Stream started");
streaming = screenStream;
// console.log(URL.createObjectURL(screenStream));
videoElement.src = URL.createObjectURL(screenStream);
captureFrames();
screenStream.oninactive = function() {
// console.log("Stream ended.");
streaming = false;
};
}).catch(function(err) {
// console.log("Stream Error: " + err);
// alert("Stream Error: " + err);
streaming = false;
});
});
}
});
function captureFrames(){
if(!streaming || !streaming.active) {
streaming = false;
// console.log("Stream ended unexpectedly.");
return;
}
// console.log("going");
canvasContext.drawImage(videoElement, 0, 0, vllaWidth, vllaHeight);
updateVlla(canvasContext.getImageData(0, 0, vllaWidth, vllaHeight).data);
setTimeout(captureFrames, 1000/captureFPS);
}