Electron desktopCapturer 模塊

2019-08-14 19:21 更新

desktopCapturer 模塊可用來獲取可用資源,這個資源可通過 getUserMedia 捕獲得到.

// 在渲染進(jìn)程中.
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');
}

當(dāng)調(diào)用 navigator.webkitGetUserMedia 時創(chuàng)建一個約束對象,如果使用 desktopCapturer 的資源,必須設(shè)置 chromeMediaSource  "desktop" ,并且 audio  false.

如果你想捕獲整個桌面的 audio 和 video,你可以設(shè)置 chromeMediaSource  "screen" ,和 audio  true. 當(dāng)使用這個方法的時候,不可以指定一個 chromeMediaSourceId.

方法

desktopCapturer 模塊有如下方法:

desktopCapturer.getSources(options, callback)

  • options Object
    • types Array - 一個 String 數(shù)組,列出了可以捕獲的桌面資源類型, 可用類型為 screen  window.
    • thumbnailSize Object (可選) - 建議縮略可被縮放的 size, 默認(rèn)為 {width: 150, height: 150}.
  • callback Function

發(fā)起一個請求,獲取所有桌面資源,當(dāng)請求完成的時候使用 callback(error, sources) 調(diào)用 callback .

sources 是一個 Source 對象數(shù)組, 每個 Source 表示了一個捕獲的屏幕或單獨窗口,并且有如下屬性 :

  • id String - 在 navigator.webkitGetUserMedia 中使用的捕獲窗口或屏幕的 id . 格式為 window:XX screen:XXXX 是一個隨機數(shù).
  • name String - 捕獲窗口或屏幕的描述名 . 如果資源為屏幕,名字為 Entire Screen  Screen <index>; 如果資源為窗口, 名字為窗口的標(biāo)題.
  • thumbnail NativeImage - 縮略圖.

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

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號