【发布时间】:2022-01-02 03:30:00
【问题描述】:
我正在使用 getUserMedia 使用用户的浏览器进行录制:
stream.current = await navigator.mediaDevices.getUserMedia({
audio: {
echoCancellation: {exact: true}
},
video: {
width: { ideal: 240 }, height: { ideal: 160 }
}
});
window.stream = stream.current;
let options = {mimeType: 'video/webm;codecs=vp9,opus'};
try {
mediaRecorder.current = new MediaRecorder(window.stream, options);
} catch (e) {
console.error('Exception while creating MediaRecorder:', e);
return;
}
mediaRecorder.current.ondataavailable = (event:BlobEvent) => {
recordedBlobs.current.push(event.data);
uploadRecordedAnswer(recordedBlobs, mutationAddAttemptAnswer)
}
mediaRecorder.current.start();
但是,即使在我停止录制后,chrome 录制图标也不会消失,如下所示:
// All these does not get rid of the red icon
stream.current!.getTracks().forEach((track:MediaStreamTrack) => track.stop());
console.log(window.stream,window.stream.getTracks())
mediaRecorder.current!.stop()
window.stream.getTracks().forEach((track:MediaStreamTrack) => track.stop());
根据其他帖子,红色图标应该在 stream.getTracks().forEach((track:MediaStreamTrack) => track.stop()); 之后消失,但是它仍然留在那里。我知道录制已经停止,因为当我检查录制的视频时,单击停止录制后它会停止,但红色图标仍然没有消失
仅供参考,我使用的是 react useRef,因此是 stream.current
【问题讨论】:
-
你确定你只调用一次 getUserMedia 吗?
-
是的,我搜索了整个代码库以确保这是我唯一一次调用 getUserMedia。
-
而且您还确保这个 sn-p 所在的任何函数都只被调用一次? (您可以在其中添加一个 console.log 并检查有多少消息)
-
是的,它只被调用一次,只有一条 console.log 消息
标签: reactjs webrtc getusermedia video-recording web-mediarecorder