UNPKG

sp-compositor

Version:

Electron app that turns websites into video streams

129 lines (114 loc) 3.72 kB
"use strict"; var _spClient = require("sp-client"); var debug = require("debug"); var log = debug("sp:sp-compositor-renderer"); var _require = require("electron"), desktopCapturer = _require.desktopCapturer; var url = require("url"); var querystring = require("querystring"); var fs = require("fs"); var path = require("path"); /* eslint-disable no-console */ var options = querystring.parse(url.parse(document.location.href).query); log(options); var video = document.querySelector("video"); video.style.width = options.width + "px"; video.style.height = options.height + "px"; desktopCapturer.getSources({ types: ["window", "screen"] }, function (error, sources) { if (error) { throw error; } var source = sources.find(function (source) { return source.name === options.windowId; }); if (!source) { if (sources.length > 0) { console.log("Couldn't find " + options.windowId + ", falling back to " + JSON.stringify(sources[0])); source = sources[0]; } else { throw new Error("No sources received from desktopCapturer"); } } navigator.mediaDevices.getUserMedia({ audio: false, video: { mandatory: { chromeMediaSource: "desktop", chromeMediaSourceId: source.id, minWidth: options.width, maxWidth: options.width, minHeight: options.height, maxHeight: options.height } } }).then(function (stream) { // video.srcObject = stream; var recorder = new MediaRecorder(stream); window.recorder = recorder; var converter = new _spClient.convertVideoStream(); var dash = (0, _spClient.dashStream)(); if (options.rtmp) { converter.pipe((0, _spClient.rtmpOutputStream)({ rtmpUrl: options.rtmp })); } else { converter.pipe(dash); var server = (0, _spClient.dashServer)(dash); server.listen(options.port); } recorder.ondataavailable = function (event) { var fileReader = new FileReader(); fileReader.onload = function () { try { converter.write(Buffer.from(this.result)); } catch (e) { console.error(e); } }; fileReader.readAsArrayBuffer(event.data); }; recorder.onerror = function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return log("onerror", args); }; recorder.onpause = function () { for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } return log("onpause", args); }; recorder.onresume = function () { for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { args[_key3] = arguments[_key3]; } return log("onresume", args); }; recorder.onstart = function () { for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { args[_key4] = arguments[_key4]; } return log("onstart", args); }; recorder.onstop = function () { for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { args[_key5] = arguments[_key5]; } return log("onstop", args); }; setTimeout(function () { log("starting"); recorder.start(100); }, 5000); }).catch(function (err) { console.log("getUserMedia error"); console.log(err); }); // if (error) throw error; // for (let i = 0; i < sources.length; ++i) { // if (sources[i].name === "Electron") { // // return; // } // } }); //# sourceMappingURL=renderer.js.map