繁体   English   中英

如何使用 WebRTC 停止屏幕共享?

[英]how to stop screen sharing using WebRTC?

我正在使用getUserMedia来访问屏幕共享。 当用户单击停止按钮时,我想停止屏幕共享。

根据MediaStream API ,应该调用stop()函数来停止共享。 但是当我这样做时,我发现 Chrome 栏https://xxx is sharing your screen <button>Stop sharing</button>仍然存在,尽管流已停止。

有没有可以让Chrome bar消失的功能?

可以使用相同的MediaStream.stopMediaStreamTracks.stop方法停止基于命令行标志的屏幕共享,但是如果您使用的是desktopCapture API演示),则可以使用cancelChooseDesktopMedia ,如下所示:

function releaseCapturing() {
    // getting desktop-media-id from local-storage
    chrome.desktopCapture.cancelChooseDesktopMedia(parseInt(localStorage['desktop-media-request-id']));
}

function captureDesktop() {
    var desktop_id = chrome.desktopCapture.chooseDesktopMedia(
        ["screen", "window"], onAccessApproved);

    // storing desktop-media-id in the local-storage
    localStorage.setItem('desktop-media-request-id', desktop_id);
}

你可以使用 stream.onended

stream.onended = () => {
  console.info("ScreenShare has ended");
};

或者你可以监听结束的事件

stream.getVideoTracks()[0].addEventListener('ended', () => {
  //perform your task here
});

据我所知 MediaStream.stop 方法已被弃用。 如果您想停止 MediaStream,您应该停止并关闭它的轨道。 这样做之后,一旦绑定到共享屏幕的所有曲目都停止,您提到的“Chrome 栏”就会消失。 这可以通过以下代码实现。 “this.screenStream”是共享屏幕的MediaStream对象。

    var tracks = this.screenStream.getTracks();
    for( var i = 0 ; i < tracks.length ; i++ ) tracks[i].stop();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM