本地媒体访问受限,直到用户与 Firefox 中的页面交互

localmedia access restricted until user interacts with the page in firefox

我已经允许在我的域中使用麦克风。我们在多个选项卡中使用我们的域。当我在同一个选项卡中访问时,我能够获取本地媒体(麦克风)。但是我无法在不访问该选项卡的情况下在其他选项卡(同一域)中获取 WebRTC 的本地媒体。只有在访问该选项卡后才能获取本地媒体访问权限。

这是为了安全和隐私而特意做的吗? .有什么办法可以解决我的问题吗?

原因:限制用于 WebRTC 会话的资源。我们将 WebRTC 会话保存在我们域的单个选项卡中,并且所有选项卡仅使用该资源进行调用。

尝试将麦克风设置为 iframe 属性。但这并没有解决问题。不过它在 GoogleChrome 浏览器中运行良好。如果我打开一个新选项卡 (T1) 并在其中启动 webrtc 并从另一个选项卡 (T2) 进行 webrtc 调用而不访问选项卡 T1 ,则调用在 chrome 中连接但在 firefox 中不连接,除非我访问 T1 。

注意:在域中允许麦克风不是请求权限,它会自动获取。只是它只有在我访问选项卡后才会获取。我已经授予了我的域的麦克风访问权限。

Is it intentionally done for Security & Privacy?

是的,这是为了防止后台标签随意打开摄像头或麦克风以监视用户。因为那令人毛骨悚然。我相信 Safari 的工作方式相同。

getUsermedia specification 最近将此设为 要求:

  • 步骤 6.1。 "The User Agent MUST wait to proceed to the next step until the current settings object's responsible document is fully active and has focus."*

所以我预计 Chrome 很快就会效仿。

Is there any way to solve my problem ?

那将大大破坏保证。

用户可以放心,只有当前聚焦的标签才能打开摄像头或麦克风。

If I open a new tab(T1) and initiate webrtc in it and make webrtc call from another tab (T2)without ever visiting the tab T1 , call is connected in chrome but not in firefox unless i visit T1.

这是一个 RTCPeerConnection connection 问题,与 getUserMedia.

是分开的

解决方法是不阻止在访问麦克风时建立连接。

没有理由不能先连接再添加麦克风。

或者提前拿到麦克风,稍后再连接。基本上,这两个动作不需要重合,也不需要互相遮挡。