| (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
Scoping was annoying me so I made it an IEF