Tengo una aplicación en la que necesito capturar el escritorio al hacer clic en el botón. Todos los tutoriales relevantes en YouTube tienen entre 1 y 2 años. El módulo desktopCapturer solo está disponible en el componente principal, y no puedo entender cómo usarlo desde allí para capturar el clic del botón y comenzar a grabar. Anteriormente, el módulo desktopCapturer también estaba disponible en el componente de procesamiento, como he oído, pero ahora solo está disponible en el componente principal.
mira esto: https://www.electronjs.org/docs/latest/api/desktop-capturer
puede activar una captura de escritorio enviando un mensaje ipc desde su proceso de representación (usando invocar / enviar asíncrono y eventos) a su proceso principal.
El siguiente ejemplo capturará la ventana de su aplicación Electron:
ipcMain.handle('get-sources', () => { return desktopCapturer.getSources({ types: ['window', 'screen'] }).then(async sources => { for (const source of sources) { if (source.name === 'YOUR ELECTRON APP NAME' && mainWindow) { return source.id; } } }) }); const handleStream = (stream: any) => { const video = document.querySelector('video') video!.srcObject = stream video!.onloadedmetadata = () => video!.play() } const handleError = (e: any) => { console.log(e) } const getResource = async () => { const sourceId = await window.electron.getSources(); try { const stream = await navigator.mediaDevices.getUserMedia({ audio: false, video: { mandatory: { chromeMediaSource: 'desktop', chromeMediaSourceId: sourceId, minWidth: 1280, maxWidth: 1280, minHeight: 720, maxHeight: 720 } } }) handleStream(stream) } catch (e) { handleError(e) } } getResource(); <video width="750" height="500" controls > <source src="" type="video/mp4"/> </video> declare global { interface Window { electron: { getSources: () => Promise<string>, }; } }y en electrones
contextBridge.exposeInMainWorld('electron', { getSources: () => ipcRenderer.invoke('get-sources'), });