electron 录屏
时间: 2023-10-02 10:09:00 浏览: 117
electron+ffmpeg+vue3 录屏推流 源代码 真实有效
5星 · 资源好评率100%
在 Electron 中,你可以使用桌面捕获 API 来录制屏幕。这个 API 可以让你捕获整个屏幕、特定窗口或区域的视频和音频。
以下是一个简单的示例,展示如何在 Electron 中录制屏幕:
```javascript
const { desktopCapturer, remote } = require('electron');
const { writeFile } = require('fs');
async function startCapture() {
const sources = await desktopCapturer.getSources({ types: ['window', 'screen'] });
const options = {
types: ['screen'],
thumbnailSize: {
width: 1920, // 设置你想要的分辨率
height: 1080
}
};
desktopCapturer.getSources(options, (error, sources) => {
if (error) throw error;
for (let i = 0; i < sources.length; ++i) {
if (sources[i].name === 'Entire screen') { // 更改为你想要捕获的源名称
const screenStream = navigator.mediaDevices.getUserMedia({
audio: false,
video: {
mandatory: {
chromeMediaSource: 'desktop',
chromeMediaSourceId: sources[i].id,
minWidth: 1280, // 设置你想要的分辨率
minHeight: 720
}
}
});
handleStream(screenStream);
return;
}
}
});
}
function handleStream(stream) {
const chunks = [];
const recorder = new MediaRecorder(stream);
recorder.ondataavailable = e => chunks.push(e.data);
recorder.onstop = () => {
const blob = new Blob(chunks, { type: 'video/webm' });
const buffer = Buffer.from(blob);
const filePath = 'path/to/save/video.webm'; // 设置你想要保存的视频文件路径
writeFile(filePath, buffer, () => {
console.log('Video saved successfully!');
});
};
recorder.start();
// 定义录制时间,可以根据需求进行调整
setTimeout(() => {
recorder.stop();
}, 5000); // 录制 5 秒钟
}
startCapture();
```
上述代码使用 Electron 的 `desktopCapturer` API 来获取可用的屏幕源,并选择特定的源进行录制。录制的视频将保存为 WebM 格式的文件。
请注意,要在 Electron 中使用 `desktopCapturer`,你需要添加 `nodeIntegration: true` 到你的 `BrowserWindow` 配置中。
希望这个示例能帮助到你!如有任何问题,请随时提问。
阅读全文