Skip to content

Instantly share code, notes, and snippets.

@jsscclr
Forked from PaulKinlan/canvasrecord.js
Created December 17, 2016 06:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jsscclr/2bab0953ecb8b05b3cd460034188d781 to your computer and use it in GitHub Desktop.
Save jsscclr/2bab0953ecb8b05b3cd460034188d781 to your computer and use it in GitHub Desktop.
Screen recorder in JS
(function() {
let canvas = document.querySelector('canvas');
// Optional frames per second argument.
let stream = canvas.captureStream(25);
var options = {mimeType: 'video/webm; codecs=vp9'};
let recorder = new MediaRecorder(stream, options);
let blobs = [];
function download(blob) {
var url = window.URL.createObjectURL(blob);
var a = document.createElement('a');
a.style.display = 'none';
a.href = url;
a.download = 'test.webm';
document.body.appendChild(a);
a.click();
setTimeout(function() {
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 100);
}
recorder.ondataavailable = e => { console.log(e.data); if (e.data && e.data.size > 0) blobs.push(e.data)};
recorder.onstop = (e) => download(new Blob(blobs, {type: 'video/webm'}));
recorder.start(10); // collect 10ms chunks of data
// Record for 10 seconds.
setTimeout(()=> recorder.stop(), 10000);
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment