Код React для создания элемента выглядит следующим образом:
export const VideoPage: React.FC<{}> = () => {
const localVideoRef = useCallback((localVideo: HTMLMediaElement | null) => {
if (localVideo) {
startVideo(localVideo);
}
}, []);
return (
<>
<video ref={localVideoRef} playsInline></video>
</>
);
};
Функция startVideo()
просто:
export async function startVideo(localVideo: HTMLMediaElement) {
const mediaStream = await navigator.mediaDevices.getUserMedia({
audio: false,
video: true,
});
console.log("localVideo", localVideo);
console.log("mediaStream", mediaStream);
localVideo.srcObject = mediaStream;
}
Когда я загружаю страницу, зеленый свет над камера зажигает; красная точка «видео» появляется на вкладке в браузере; элемент video занимает квадрат в центре страницы браузера. На консоли регистрируется следующее:
localVideo <video playsinline></video>
mediaStream MediaStream {id: "jTQifTT0vSfcBw7v6E6E9M81mpv7qVhRrTe2", active: true, onaddtrack: null, onremovetrack: null, onactive: null, …}
Все именно так, как я ожидал. На самом деле, единственное, чего я не ожидал, это то, что видеопоток не появляется на экране.
Я не знаю, как это отладить. Все выглядит нормально, но просто не работает. Есть предложения?