Я использую ReactJS для отображения живого потока (с моей веб-камеры), используя элемент видео HTML5. Медиасервер OpenVidu обрабатывает серверную часть. Я хотел бы использовать элемент canvas
для рисования потокового видео на холсте с помощью метода drawImage ().
Я видел другие примеры, но в них элемент видео всегда имеет источник. У моего нет источника - когда я проверяю элемент видео, я вижу только: <video autoplay id="remote-video-zfrstyztfhbojsoc_CAMERA_ZCBRG"/>
Это то, что я пробовал, однако холст не работает.
export default function Video({ streamManager }) {
const videoRef = createRef()
const canvasRef = createRef()
useEffect(() => {
if (streamManager && !!videoRef) {
//OpenVidu media server attaches the live stream to the video element
streamManager.addVideoElement(videoRef.current)
if (canvasRef.current) {
let ctx = canvasRef.current.getContext('2d')
ctx.drawImage(videoRef.current, 0, 0)
}
}
})
return (
<>
//video element displays the live stream
<video autoPlay={true} ref={videoRef} />
// canvas element NOT working, nothing can be seen on screen
<canvas autoplay={true} ref={canvasRef} width="250" height="250" />
</>
)
}
ОБНОВЛЕНИЕ: после дальнейшего изучения я понял, что мне нужно использовать функцию setInterval (), и поэтому предоставил решение ниже.