手动关闭getDisplayMedia

时间:2019-11-14 10:00:02

标签: javascript webrtc mediadevices get-display-media

是否可以在不选择要共享的应用程序的情况下关闭getDisplayMedia({video:true})的本机屏幕选择器? 据我所知,如果正在共享的曲目已停止,它将自动在track.stop()上关闭。但是,在某些情况下,我需要关闭本机屏幕选择器,而无需按“取消”或选择要共享的应用程序。

Screen Picker Img

1 个答案:

答案 0 :(得分:1)

刷新页面:

window.location = window.location.href;

这将删除所有浏览器中的原本粘滞的提示。

在Chrome中,提示是模式提示,但是此demo using a timeout对我有用:

const wait = ms => new Promise(resolve => setTimeout(resolve, ms));

button.onclick = async () => {
  const stream = await Promise.race([
    navigator.mediaDevices.getDisplayMedia({video: true}),
    wait(5000)
  ]);
  if (!stream) {
    window.location = window.location.href;
  }
  video.srcObject = stream;

当然,这有可能在用户使用拾取器时将其撕掉。