WebRTC 网络摄像头不适用于 Safari 和 Microsoft Edge

WebRTC Webcam not working on Safari and Microsoft Edge

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

有趣的是,它不适用于 Edge 和 Safari。它要求相机使用权限,当我们授予权限时,相机不会加载,我在控制台中收到以下错误。

Safari 和 Edge 上的错误消息

navigator.getUserMedia error: ReferenceError

我的代码是这样的

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 samples getUserMedia

我建议你可以在 MS Edge 浏览器中测试这个例子,让我们知道它是否有效。

如果可行,那么您可以根据 Github 页面上的官方示例修改您的代码。

如果您使用的是旧版本的 MS Edge 浏览器,那么我建议您更新到最新版本并再次测试该问题。