Electron 中文文档 Electron desktopCapturer 模块

2024-02-26 开发教程 Electron 中文文档 匿名 4

desktopCapturer模块可用来获取可用资源,这个资源可通过 getUserMedia捕获得到.

// 在渲染进程中.
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.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) {
document.querySelector('video').src = URL.createObjectURL(stream);
}
function getUserMediaError(e) {
console.log('getUserMediaError');
}

当调用 navigator.webkitGetUserMedia时创建一个约束对象,如果使用 desktopCapturer的资源,必须设置 chromeMediaSource"desktop",并且 audiofalse.

如果你想捕获整个桌面的 audio 和 video,你可以设置 chromeMediaSource"screen",和 audiotrue. 当使用这个方法的时候,不可以指定一个 chromeMediaSourceId.

方法

desktopCapturer模块有如下方法:

desktopCapturer.getSources(options, callback)

  • optionsObject
    • typesArray - 一个 String 数组,列出了可以捕获的桌面资源类型, 可用类型为 screenwindow.
    • thumbnailSizeObject (可选) - 建议缩略可被缩放的 size, 默认为 {width: 150, height: 150}.
  • callbackFunction

发起一个请求,获取所有桌面资源,当请求完成的时候使用 callback(error, sources)调用 callback.

sources是一个 Source对象数组, 每个 Source表示了一个捕获的屏幕或单独窗口,并且有如下属性 :

  • idString - 在 navigator.webkitGetUserMedia中使用的捕获窗口或屏幕的 id . 格式为 window:XXscreen:XXXX是一个随机数.
  • nameString - 捕获窗口或屏幕的描述名 . 如果资源为屏幕,名字为 Entire ScreenScreen <index>; 如果资源为窗口, 名字为窗口的标题.
  • thumbnailNativeImage - 缩略图.

注意: 不能保证 source.thumbnail的 size 和 options中的 thumnbailSize一直一致. 它也取决于屏幕或窗口的缩放比例.