Twilio视频通话:仅在Chrome中拒绝权限

问题描述

我正在尝试使用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视频连接。在Firefox和Safari以及localhost上的任何浏览器中(在任何浏览器中),连接均成功。在浏览器中重置权限无济于事,已授予Chrome中的权限。您能给我一个提示什么可能是问题吗?

解决方法

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

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

因此,基本上禁止使用麦克风和摄像头。将none更改为*解决了该问题,浏览器可以访问音频和视频流。 有趣,但是Mozilla和Safari似乎忽略了这些指令,因为在这些浏览器中一切正常,而没有对策略进行任何更改。