Я создаю электрон, в котором мне нужен API desktopCapturer
, но я не совсем понимаю, как его использовать.
С официальной страницы API (и пример приложения: https://github.com/hokein/electron-sample-apps/tree/master/desktop-capture) Я вижу, что desktopCapturer
дает мне только идентификаторы источников, а не сами видеопотоки. Для этого я должен использовать navigator.mediaDevices.getUserMedia()
. Но объект ограничений больше не имеет свойства mandatory
, и потому яя использую машинопись Я получаю сообщение об ошибке, если пытаюсь его использовать.
Я пытался использовать свойство deviceId
, но получаю эту ошибку: Uncaught (in promise) DOMException: Requested device not found
(на устройстве свеб-камера Я получаю поток веб-камеры вместо этой ошибки). Вот мой код:
import { desktopCapturer, DesktopCapturerSource } from "electron";
function onLoad(){
desktopCapturer.getSources({
thumbnailSize: {
width: 256,
height: 256,
},
types: ["screen", "window"]
}, (error: Error, srcs: DesktopCapturerSource[]) => {
if (error)
throw error;
let video: HTMLVideoElement | null = document.querySelector("video");
for (let src of srcs)
navigator.mediaDevices.getUserMedia({
video:{
deviceId : src.id
}
}).then((stream:MediaStream)=>{
if(video){
video.srcObject = stream;
video.play();
}
})
})
}
document.addEventListener("DOMContentLoaded", onLoad);
Я также пытался использовать navigator.getDisplayMedia()
, но я не получил бы всплывающее окно с предложением выбрать источниккак я получу в Chrome. Что я должен сделать, чтобы это работало? Заранее спасибо!