【问题标题】:What is the correct way to handle native cancelling of getUserMedia screenshare?处理本机取消 getUserMedia 屏幕共享的正确方法是什么?
【发布时间】:2018-03-23 02:46:42
【问题描述】:

我正在将屏幕共享与 getUserMedia 一起用于我正在开发的 Web 应用程序。

我目前正在使用带有 Chrome 扩展程序的 Chrome 使用下面的 API 来实现该功能,但该功能在 Firefox 中也是可能的,并且可能通过 getDisplayMedia 或其他方式成为本机可用(我相信过去是可能的)未来。 https://developer.chrome.com/extensions/desktopCapture

在屏幕共享期间,浏览器底部会显示一个原生对话框以停止屏幕共享。我想要一种处理此事件的方法,但我不知道实现此事件的通用标准方法。是否有适当的方法来做到这一点(最好在所有 API 中),或者我应该通过跟踪事件来实现这一点?

【问题讨论】:

    标签: javascript google-chrome-extension getusermedia screensharing


    【解决方案1】:

    我不太确定 Chrome 未指定实现的行为方式,但是是的,您通常必须收听 VideoTrack 的 onended 事件。

    这个 sn-p 应该只能在 FF 中工作,这是唯一允许非 Chrome 页面访问此功能的。

    navigator.mediaDevices.getUserMedia({video: {mediaSource: 'screen'}}).then(stream => {
      document.getElementById('vid').srcObject = stream;
      const v_track = stream.getVideoTracks()[0];
      v_track.onended = e => console.log('stopped');
    }).catch(console.error);
    <video id="vid" autoplay></video>

    如果它甚至不起作用(因为 StackSnippets© 严格的安全规则),这里是 fiddle

    【讨论】:

    • 似乎如此。由于没有定义 vid,我编辑了上面的代码。我在 Chrome 中尝试过,但它似乎不共享屏幕。火狐工作正常。谢谢。
    猜你喜欢
    • 2020-03-14
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 2019-01-19
    相关资源
    最近更新 更多