| |
| if (!ScreenCastRecorder.isSupportedBrowser()) { |
| console.error("Screen Recording not supported in this browser"); |
| } |
| let recorder; |
| let outputBlob; |
| const stopRecording = () => __awaiter(void 0, void 0, void 0, function* () { |
| let currentState = "RECORDING"; |
| |
| if (currentState === "OFF" || recorder == null) { |
| return; |
| } |
| |
| |
| |
| |
| |
| if (currentState === "RECORDING") { |
| if (recorder.getState() === "inactive") { |
| |
| |
| |
| console.log("Inactive"); |
| } |
| else { |
| outputBlob = yield recorder.stop(); |
| console.log("Done recording"); |
| |
| |
| |
| |
| window.currentState = "PREVIEW_FILE"; |
| const videoSource = URL.createObjectURL(outputBlob); |
| window.videoSource = videoSource; |
| const fileName = "recording"; |
| const link = document.createElement("a"); |
| link.setAttribute("href", videoSource); |
| link.setAttribute("download", `${fileName}.webm`); |
| link.click(); |
| } |
| } |
| }); |
| const startRecording = () => __awaiter(void 0, void 0, void 0, function* () { |
| const recordAudio = false; |
| recorder = new ScreenCastRecorder({ |
| recordAudio, |
| onErrorOrStop: () => stopRecording(), |
| }); |
| try { |
| yield recorder.initialize(); |
| } |
| catch (e) { |
| console.warn(`ScreenCastRecorder.initialize error: ${e}`); |
| |
| window.currentState = "UNSUPPORTED"; |
| return; |
| } |
| |
| const hasStarted = recorder.start(); |
| if (hasStarted) { |
| |
| |
| |
| console.log("Started recording"); |
| window.currentState = "RECORDING"; |
| } |
| else { |
| stopRecording().catch(err => console.warn(`withScreencast.stopRecording threw an error: ${err}`)); |
| } |
| }); |
|
|
| |
| window.startRecording = startRecording; |
| window.stopRecording = stopRecording; |