关于javascript:WebRTC网路摄影机无法在Safari和Microsoft Edge上运作

WebRTC Webcam not working on Safari and Microsoft Edge

我想访问网络摄像头和音频设备以使用WebRTC录制视频。但是,它仅适用于Chrome和Firefox。

有趣的是,它在Edge和Safari上不起作用。它要求获得摄像头使用许可,当我们授予许可时,摄像头无法加载,并且在控制台中出现以下错误。

Safari和Edge上的

错误消息

navigator.getUserMedia error: ReferenceError

我的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
async init(constraints) {
    try {
        if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
            const stream = await navigator.mediaDevices.getUserMedia(constraints);
            this.handleSuccess(stream);
        } else {
            this.setState({
                error:
                    'Your Browser is not supported. Please use latest version of Chrome, Safari, Firefox or Edge.',
            });
        }
        if (!MediaRecorder) {
            this.setState({
                error:
                    'Your Browser is not supported. Please use latest version of Chrome, Safari, Firefox or Edge.',
            });
        }
    } catch (e) {
        this.setState({
            error:
                'We could not find any audio/video recording device. Please make sure you have given permission to use webcam and microphone.',
        });
        console.error('navigator.getUserMedia error:', e.name);
    }
}

关于在所有这些浏览器中完美加载相机的任何建议。


好像您在MS Edge旧版浏览器中遇到问题。如果我误会了,请纠正我。

我尝试在MS Edge旧版浏览器(44.18362.449.0)中测试官方示例代码,并且工作正常。

WebRTC示例getUserMedia

我建议您可以在MS Edge浏览器中测试此示例,并让我们知道它是否有效。

如果有效,则可以根据其Github页面上的官方示例修改代码。

如果您使用的是旧版本的MS Edge浏览器,则建议您使用最新版本进行更新,然后再次测试该问题。