• desktopCapturer
    • 方法
      • desktopCapturer.getSources(options, callback)

    desktopCapturer

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

    进程: Renderer

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

    1. // In the renderer process.
    2. const { desktopCapturer } = require('electron')
    3. desktopCapturer.getSources({ types: ['window', 'screen'] }, (error, sources) => {
    4. if (error) throw error
    5. for (let i = 0; i < sources.length; ++i) {
    6. if (sources[i].name === 'Electron') {
    7. navigator.mediaDevices.getUserMedia({
    8. audio: false,
    9. video: {
    10. mandatory: {
    11. chromeMediaSource: 'desktop',
    12. chromeMediaSourceId: sources[i].id,
    13. minWidth: 1280,
    14. maxWidth: 1280,
    15. minHeight: 720,
    16. maxHeight: 720
    17. }
    18. }
    19. }).then((stream) => handleStream(stream))
    20. .catch((e) => handleError(e))
    21. return
    22. }
    23. }
    24. })
    25. function handleStream (stream) {
    26. const video = document.querySelector('video')
    27. video.srcObject = stream
    28. video.onloadedmetadata = (e) => video.play()
    29. }
    30. function handleError (e) {
    31. console.log(e)
    32. }

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

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

    1. const constraints = {
    2. audio: {
    3. mandatory: {
    4. chromeMediaSource: 'desktop'
    5. }
    6. },
    7. video: {
    8. mandatory: {
    9. chromeMediaSource: 'desktop'
    10. }
    11. }
    12. }

    方法

    desktopCapturer 模块有以下方法:

    desktopCapturer.getSources(options, callback)

    • options 对象

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

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

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