Update desktop-capturer module

This commit is contained in:
Milan Burda
2016-03-26 02:11:24 +01:00
parent de9d5a1514
commit 6c229fee0f
2 changed files with 65 additions and 2 deletions
@@ -100,6 +100,41 @@ crashReporter.start({
autoSubmit: true
});
// desktopCapturer
// https://github.com/atom/electron/blob/master/docs/api/desktop-capturer.md
var desktopCapturer = require('electron').desktopCapturer;
desktopCapturer.getSources({types: ['window', 'screen']}, function(error, sources) {
if (error) throw error;
for (var i = 0; i < sources.length; ++i) {
if (sources[i].name == "Electron") {
(navigator as any).webkitGetUserMedia({
audio: false,
video: {
mandatory: {
chromeMediaSource: 'desktop',
chromeMediaSourceId: sources[i].id,
minWidth: 1280,
maxWidth: 1280,
minHeight: 720,
maxHeight: 720
}
}
}, gotStream, getUserMediaError);
return;
}
}
});
function gotStream(stream: any) {
(document.querySelector('video') as HTMLVideoElement).src = URL.createObjectURL(stream);
}
function getUserMediaError(error: Error) {
console.log('getUserMediaError', error);
}
// nativeImage
// https://github.com/atom/electron/blob/master/docs/api/native-image.md
+30 -2
View File
@@ -6,13 +6,29 @@
/// <reference path="github-electron.native-image.d.ts" />
declare namespace Electron {
/**
* The desktopCapturer module can be used to get available sources
* that can be used to be captured with getUserMedia.
*/
interface DesktopCapturer {
/**
* Starts a request to get all desktop sources.
*
* Note: There is no guarantee that the size of source.thumbnail is always
* the same as the thumnbailSize in options. It also depends on the scale of the screen or window.
*/
getSources(options: any, callback: (error: Error, sources: DesktopCapturerSource[]) => any): void;
}
interface DesktopCapturerOptions {
types?: string[];
/**
* The types of desktop sources to be captured.
*/
types?: ('screen' | 'window')[];
/**
* The suggested size that thumbnail should be scaled.
* Default: {width: 150, height: 150}
*/
thumbnailSize?: {
width: number;
height: number;
@@ -20,8 +36,20 @@ declare namespace Electron {
}
interface DesktopCapturerSource {
/**
* The id of the captured window or screen used in navigator.webkitGetUserMedia.
* The format looks like window:XX or screen:XX where XX is a random generated number.
*/
id: string;
/**
* The described name of the capturing screen or window.
* If the source is a screen, the name will be Entire Screen or Screen <index>;
* if it is a window, the name will be the windows title.
*/
name: string;
/**
* A thumbnail image.
*/
thumbnail: NativeImage;
}
}