Я использую Electron Desktop Capturer https://github.com/electron/electron/blob/master/docs/api/desktop-capturer.md, чтобы делать снимки этого потока через равные промежутки времени. Я использую этот код, но по какой-то причине я получаю сообщение об ошибке:
function takeScr(stream) {
const video = localStream.getVideoTracks()[0];
console.log(video)
const canvas = document.createElement('canvas');
canvas.getContext("2d").drawImage(video, 0, 0, 300, 300, 0, 0, 300, 300);
}
В данный момент я просто нажимаю кнопку, чтобы активировать эту функцию снимка экрана после начала воспроизведения потока. Журнал консоли показывает видеотрек без проблем с выводом:
MediaStreamTrack {kind: "video", id: "7a19a94f-6077-4e3d-b534-03d138b3f300", label: "Screen", enabled: true, muted: false, …}
но функция canvas.getContext
выдает ошибку:
Uncaught TypeError: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The provided value is not of type '(CSSImageValue or HTMLImageElement or SVGImageElement or HTMLVideoElement or HTMLCanvasElement or ImageBitmap or OffscreenCanvas)'
Здесь есть много вопросов об этой ошибке, но ни один из них не решает мою проблему, и ни один не касается видеопотоков. Некоторые решения заключались в том, что изображение не загружалось при попытке рисования на холст, но, поскольку я нажимаю кнопку через несколько секунд после запуска потока, я уверен, что оно должно быть загружено?
Может быть, я делаю это неправильно, и есть лучший способ сделать скриншоты источника видео из Desktop Capturer?