Webrtc MediaStream for Video 仅在调用 getUserMedia 时显示



我有一个能够从远程RTCPeerConnection获取MediaStream的Web前端。

一旦我得到这个stream,我就把它传递给一个<video>标签,autoPlay集合。

(注意:前端在 React 中,所以我们将流作为带有refsrcObject传递。

在火狐中一切正常。

在Chrome 中,仅当我在应用程序启动时执行此操作时,才会显示视频:

  • 调用navigator.mediaDevices.getUserMedia({ ... })audiovideo设置为 true
  • 获取getUserMedia返回的 MediaStream ,并将其保存在全局或顶级变量中

现在,这对我来说没有任何意义,因为:

  • 我不想要求用户允许访问其麦克风或网络摄像头以显示视频
  • 这只发生在Chrome中,Firefox工作正常
  • 这发生在localhosthttps://"公共"域上,因此这可能不是安全问题
  • 这似乎不受玩<video>标签的autoPlaycontrols等属性的影响。

我在这里错过了什么明显的东西?

Chrome 在 2018 年引入了自动播放限制。当getUserMedia处于活动状态时,这些不会生效。 如果您的应用逻辑在 Chrome 启动时有效,并且 --autoplay-policy=no-user-gesture-required,则表明情况确实如此。本文还提供了一些背景信息和可能的解决方法,例如引入用户手势。

(不,这些限制没有意义...

最新更新