Я пытаюсь создать два приложения для совместного использования экрана в среде LAN, используя Electron, React и TypeScript. Одно приложение будет захватывать экранный поток и выполнять широковещательную передачу UDP, а другое приложение, которое будет работать на нескольких устройствах, получит поток и отобразит его. Я изучил desktopCapturer
API, предоставленный Electron, но при запуске этого примера кода произошла ошибка:
desktopCapturer
.getSources({ types: ["window", "screen"] })
.then(async (sources) => {
for (const source of sources) {
if (source.name === "Entire Screen") {
const displayMediaOptions = {
video: {
cursor: "always",
mandatory: {
chromeMediaSource: "desktop",
chromeMediaSourceId: source.id,
maxWidth: 800,
maxHeight: 700,
},
},
audio: false,
};
try {
const stream = await navigator.mediaDevices.getUserMedia(
displayMediaOptions
);
handleStream(stream);
} catch (e) {
handleError(e);
}
return;
}
}
});
Ошибка:
Argument of type '{ video: { cursor: string; mandatory: { chromeMediaSource: string; chromeMediaSourceId: string; maxWidth: number; maxHeight: number; }; }; audio: boolean; }' is not assignable to parameter of type 'MediaStreamConstraints'.
Types of property 'video' are incompatible.
Type '{ cursor: string; mandatory: { chromeMediaSource: string; chromeMediaSourceId: string; maxWidth: number; maxHeight: number; }; }' is not assignable to type 'boolean | MediaTrackConstraints'.
Type '{ cursor: string; mandatory: { chromeMediaSource: string; chromeMediaSourceId: string; maxWidth: number; maxHeight: number; }; }' has no properties in common with type 'MediaTrackConstraints'.ts(2345)
Я посмотрел в MediaTrackConstraints
и обнаружил, что он не поддерживает свойство mandatory
. Я также обнаружил, что WebRT C может быть полезным, но не знаю, будет ли он работать в среде LAN без поддержки серверов?
Итак, мне интересно, есть ли какие-либо обходные пути для этой проблемы или какие другие технологии я могу использовать для совместного использования экрана в локальной сети?