Electron中文文档

新手 685983304  中级 642625556 高级 602866851 Q群区别? 征集友情链接公告

推荐版:3.0.10   测试版:4.0.0-beta.8   极客版:4.0.0-nightly.20181010  

desktopCapturer

通过[` navigator.mediaDevices.getUserMedia `] API ,可以访问那些用于从桌面上捕获音频和视频的媒体源信息。

进程: Renderer

下面的示例演示如何从标题为 Electron 的桌面窗口捕获视频:

// In the renderer process.
const {desktopCapturer} = require('electron')

desktopCapturer.getSources({types: ['window', 'screen']}, (error, sources) => {
  if (error) throw error
  for (let i = 0; i < sources.length; ++i) {
    if (sources[i].name === 'Electron') {
      navigator.mediaDevices.getUserMedia({
        audio: false,
        video: {
          mandatory: {
            chromeMediaSource: 'desktop',
            chromeMediaSourceId: sources[i].id,
            minWidth: 1280,
            maxWidth: 1280,
            minHeight: 720,
            maxHeight: 720
          }
        }
      })
      .then((stream) => handleStream(stream))
      .catch((e) => handleError(e))
      return
    }
  }
})

function handleStream (stream) {
  const video = document.querySelector('video')
  video.srcObject = stream
  video.onloadedmetadata = (e) => video.play()
}

function handleError (e) {
  console.log(e)
}

若要从 desktopCapturer 提供的源捕获视频, 则传递给 [` navigator.mediaDevices.getUserMedia `] 的约束必须包括 chromeMediaSource: "desktop" audio: false

要从整个桌面同时捕获音频和视频, 传递给 [` navigator.mediaDevices.getUserMedia `] 的约束必须包括 chromeMediaSource: ' desktop ' , 同时用于 audio video , 但不应包括 chromeMediaSourceId 约束。

const constraints = {
  audio: {
    mandatory: {
      chromeMediaSource: 'desktop'
    }
  },
  video: {
    mandatory: {
      chromeMediaSource: 'desktop'
    }
  }
}

方法

desktopCapturer 模块有以下方法:

desktopCapturer.getSources(options, callback)

  • options 对象
    • types String[]-列出要捕获的桌面源类型的字符串数组, 可用类型为 screen window
    • thumbnailSize Size (可选)-媒体源缩略图应缩放到的大小。默认值为 150 x 150
  • callback Function - 回调函数

开始收集所有有效桌面媒体源的信息,当结束时将调用 callback(error, sources)

sourcesDesktopCapturerSource对象数组, 每个DesktopCapturerSource 代表一个屏幕或一个可捕获的独立窗口。



相关npm包集合




相关站点资源





官方指南

常见问题 (FAQ)

指南和教程

详细教程

API 参考

自定义 DOM 元素:

主进程可用的模块:

渲染进程(网页)可用的模块:

两种进程都可用的模块:

开发

  • electron 如何禁用页面刷新事件?
  • 对比理解 electron 中的常量 __dirname 和 __static
  • JS开发者社区

    和大家在一起

    新手/1元新手 685983304 
    中级/5元 中级 642625556
    高级/50元 高级 602866851