最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Electron采集桌面共享和系統(tǒng)音頻(桌面捕獲)實例

 更新時間:2023年10月18日 09:54:19   作者:Sean  
這篇文章主要為大家介紹了Electron采集桌面共享和系統(tǒng)音頻(桌面捕獲)實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

Electron 開發(fā)音視頻

在使用 Electron 開發(fā)音視頻項目的時候,我們不可避免會 遇到桌面共享這種場景。

webRTC 提供了, getUserMedia 方法用于采集 用戶媒體數(shù)據(jù)。比如攝像頭,麥克風(fēng)。

設(shè)置主進程信息

我們需要先在Electron 中,先創(chuàng)建窗體并載入入口 index 文件。

代碼如下:

const { app, BrowserWindow, desktopCapturer, ipcMain } = require('electron')
const path = require('path')
let win = null;
function createWindow () {
  win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js')
    }
  })
  win.loadFile('index.html')
}
app.whenReady().then(() => {
  createWindow()
  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow()
    }
  })
})
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

使用 desktopCapturer 模塊

desktopCapturer 模塊是Electron 提供的官方模塊用于捕獲系統(tǒng)桌面。 desktopCapture 支持捕獲,應(yīng)用窗口 和 桌面兩種媒體源。

但是,此模塊有使用限制,需要在主進程進行調(diào)用。 所以我們需要用到 Electron 中進行間通信的方式。

所以我們需要通過, IPC 通訊的形式,讓我們,在渲染進程中進行調(diào)用。

首先,我們在 main.js 中,通過 ipcMain 注冊一個方法,getSources

// .... other code 
ipcMain.handle('getSources', async () => {
  return await desktopCapturer.getSources({ types: ['window', 'screen'] })
})

接著,我們在渲染進程中,通過 ipcRenderer 去invoke 調(diào)用此方法便實現(xiàn)了,這個調(diào)用過程。

// .... other codes
const inputSources = await ipcRenderer.invoke('getSources')
// ... other codes

獲得source 列表后, 我們在渲染進程中,通過 HTML5 的 getUserMedia 進行捕獲具體窗口或者桌面。

示例代碼:

// ...
// other Code 
 let constraints = {
      audio: {
        mandatory: {
          chromeMediaSource: 'desktop'
        }
      },
      video: {
        mandatory: {
          chromeMediaSource: 'desktop',
          chromeMediaSourceId: sourceId
        }
      }
    }
    const stream = await navigator.mediaDevices
      .getUserMedia(constraints);
      handleStream(stream);
function handleStream (stream) {
    const video = document.querySelector('video')
    video.srcObject = stream
    video.onloadedmetadata = (e) => video.play()
  }
// ...
// other code

至此我們就完成了, 桌面視頻數(shù)據(jù)采集了。

后續(xù)我們,可以對采集到的數(shù)據(jù)進行 ,本地錄制或者 通過webrtc 推到遠端等一系列操作。

總結(jié)

在electron 中實現(xiàn)桌面共享 和 chrome web 中差異還是蠻大的, 在chrome 中我們只需要調(diào)用 getDisplayMedia 方法就能喚起桌面選擇和畫面采集。

但在electron 中,我們需要使用到, 進程間通信模塊 ipc 、 桌面采集模塊 desktopCapturer 、以及HTML5 的getUserMedia 方法才能完成整個桌面采集的過程。

關(guān)于完整代碼,我上傳到了github。

DEMO 代碼: https://github.com/shitouzxy/Electron-screenCapturerer-demo

以上就是Electron采集桌面共享和系統(tǒng)音頻(桌面捕獲)實例的詳細內(nèi)容,更多關(guān)于Electron桌面捕獲的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue 自動檢測手機端響應(yīng)式布局的五種實現(xiàn)

    vue 自動檢測手機端響應(yīng)式布局的五種實現(xiàn)

    本文主要介紹了vue自動檢測手機端響應(yīng)式布局,可以通過結(jié)合 CSS 媒體查詢、Vue 的動態(tài)數(shù)據(jù)綁定、適當(dāng)?shù)牡谌綆臁ostCSS 插件以及正確的視口設(shè)置實現(xiàn),感興趣的可以了解一下
    2024-07-07
  • Vue自定義鈴聲提示音組件的實現(xiàn)

    Vue自定義鈴聲提示音組件的實現(xiàn)

    這篇文章主要介紹了Vue中自定義一個鈴聲提示音組件的實現(xiàn)以及使用方法,文中的示例代碼講解詳細,對我們學(xué)習(xí)Vue有一定幫助,需要的可以參考一下
    2022-01-01
  • vue路由劃分模塊并自動引入方式

    vue路由劃分模塊并自動引入方式

    這篇文章主要介紹了vue路由劃分模塊并自動引入方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Vue中的同步和異步調(diào)用順序詳解

    Vue中的同步和異步調(diào)用順序詳解

    這篇文章主要介紹了Vue中的同步和異步調(diào)用順序,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Vue.js圖片滑動驗證的實現(xiàn)示例

    Vue.js圖片滑動驗證的實現(xiàn)示例

    為了防止有人惡意使用腳本進行批量操作,會設(shè)置圖片滑動驗證,本文就介紹了Vue.js圖片滑動驗證的實現(xiàn)示例,感興趣的可以了解一下
    2023-05-05
  • vue如何動態(tài)修改$router參數(shù)

    vue如何動態(tài)修改$router參數(shù)

    這篇文章主要介紹了vue如何動態(tài)修改$router參數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 詳解無限滾動插件vue-infinite-scroll源碼解析

    詳解無限滾動插件vue-infinite-scroll源碼解析

    這篇文章主要介紹了詳解無限滾動插件vue-infinite-scroll源碼解析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • 安裝vue無法運行、此系統(tǒng)無法運行腳本問題及解決

    安裝vue無法運行、此系統(tǒng)無法運行腳本問題及解決

    這篇文章主要介紹了安裝vue無法運行、此系統(tǒng)無法運行腳本問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 將vue3項目打包后部署在springboot項目運行圖文教程

    將vue3項目打包后部署在springboot項目運行圖文教程

    這篇文章主要介紹了將vue3項目打包后部署在springboot項目運行的相關(guān)資料,文中通過代碼及圖文介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2025-11-11
  • vue.js路由mode配置之去掉url上默認的#方法

    vue.js路由mode配置之去掉url上默認的#方法

    今天小編就為大家分享一篇vue.js路由mode配置之去掉url上默認的#方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11

最新評論

株洲市| 抚顺市| 句容市| 攀枝花市| 阿荣旗| 乡城县| 拜泉县| 湖口县| 调兵山市| 慈利县| 铁力市| 台东县| 丘北县| 石渠县| 罗平县| 富裕县| 巨鹿县| 石景山区| 仁化县| 清河县| 林西县| 玉溪市| 拉萨市| 宁陕县| 延边| 弋阳县| 青铜峡市| 庆城县| 陆良县| 罗城| 政和县| 冕宁县| 乌兰浩特市| 襄樊市| 辉南县| 仲巴县| 鞍山市| 浦县| 昌吉市| 乌审旗| 北宁市|