亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

Electron 開發(fā)音視頻

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

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

設置主進程信息

我們需要先在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 支持捕獲,應用窗口 和 桌面兩種媒體源。

但是,此模塊有使用限制,需要在主進程進行調(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 推到遠端等一系列操作。

總結

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

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

關于完整代碼,我上傳到了github。

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

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

相關文章

  • Vue使用distpicker插件實現(xiàn)省市級下拉框三級聯(lián)動

    Vue使用distpicker插件實現(xiàn)省市級下拉框三級聯(lián)動

    這篇文章主要介紹了Vue使用distpicker插件實現(xiàn)省市級下拉框三級聯(lián)動,比如通過JSON文件生成對應的區(qū)域下拉框,element-china-are插件,包括distpicker插件,通過代碼講解如何使用distpicker插件實現(xiàn)省市級三聯(lián)跳動,需要的朋友可以參考下
    2023-02-02
  • Vue+Vux項目實踐完整代碼

    Vue+Vux項目實踐完整代碼

    本文給大家分享一段詳細的代碼給大家介紹Vue+Vux項目實踐思路,需要的朋友可以參考下
    2017-11-11
  • vue中調(diào)用百度地圖獲取經(jīng)緯度的實現(xiàn)

    vue中調(diào)用百度地圖獲取經(jīng)緯度的實現(xiàn)

    最近做個項目,需要實現(xiàn)獲取當前位置的經(jīng)緯度,所以本文主要介紹了vue中調(diào)用百度地圖獲取經(jīng)緯度的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • vue將data恢復到初始狀態(tài) && 重新渲染組件實例

    vue將data恢復到初始狀態(tài) && 重新渲染組件實例

    這篇文章主要介紹了vue將data恢復到初始狀態(tài) && 重新渲染組件實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue中改變滾動條樣式的方法

    vue中改變滾動條樣式的方法

    這篇文章主要介紹了vue中改變滾動條樣式的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • Vue使用枚舉類型實現(xiàn)HTML下拉框步驟詳解

    Vue使用枚舉類型實現(xiàn)HTML下拉框步驟詳解

    本文分步驟給大家介紹了Vue使用枚舉類型實現(xiàn)HTML下拉框的相關知識,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-02-02
  • vue實現(xiàn)簡單的日歷效果

    vue實現(xiàn)簡單的日歷效果

    這篇文章主要為大家詳細介紹了vue實現(xiàn)簡單的日歷效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Vue中加載天地圖的離線地圖基本步驟

    Vue中加載天地圖的離線地圖基本步驟

    這篇文章主要給大家介紹了關于Vue中加載天地圖的離線地圖的基本步驟,Vue天地圖離線地圖是指基于Vue框架開發(fā)的應用程序,使用天地圖離線地圖服務提供商提供的地圖數(shù)據(jù),可以在沒有網(wǎng)絡的情況下使用地圖功能,需要的朋友可以參考下
    2023-10-10
  • Vue通過URL傳參如何控制全局console.log的開關詳解

    Vue通過URL傳參如何控制全局console.log的開關詳解

    這篇文章主要給大家介紹了關于Vue根據(jù)URL傳參如何控制全局console.log開關的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-12-12
  • Vue前端項目部署的三種方案詳解

    Vue前端項目部署的三種方案詳解

    這篇文章主要介紹了Vue前端項目部署的三種方案,本文通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下
    2024-08-08

最新評論