2

我正在尝试使用 Twilio 实现视频通话。后端成功生成令牌,我正在使用它来建立视频通话。在从浏览器请求访问麦克风和摄像头的权限后,我在 chrome 中收到以下错误:

Error with Feature-Policy header: Unrecognized feature: 'speaker'.

log.js:138 2020-09-08 16:12:12.867Z | WARN in [createLocalTracks #1]: Call to getUserMedia failed: DOMException: Permission denied

运行时

 useEffect(() => {
    isWebRtcSupported();
      createRoom().then(response => {
        Video.connect(response.data.token)
          .then(room => {
            setCreatedRoomId(response.data.room);
            setRoomData(room);
            room.on('participantConnected', participantConnected);
            room.on('participantDisconnected', participantDisconnected);
            room.participants.forEach(participantConnected);
          })
          .catch(err => setError(error)));
    }

我正在使用 twilio-video 进行连接。在 Firefox 和 Safari 以及 localhost 上的任何浏览器(在任何浏览器中)中,连接都会成功。在浏览器中重置权限没有帮助,授予 Chrome 中的权限。你能提示一下可能是什么问题吗?

4

1 回答 1

1

因此,问题出在后端部分的功能策略上。后端代码是使用 JHipster 生成的,它包含以下代码:

.featurePolicy("geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none';

所以基本上禁止使用麦克风和摄像头。更改none*解决问题,浏览器能够访问音频和视频流。有趣,但 Mozilla 和 Safari 似乎忽略了这些指令,因为在这些浏览器中一切正常,无需更改任何策略。

于 2020-09-10T09:09:30.837 回答