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

时间:2014-07-21 05:11:16

标签: javascript google-chrome webrtc getusermedia screensharing

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

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

是否有可以让Chrome栏消失的功能?

3 个答案:

答案 0 :(得分:2)

可以使用相同的MediaStream.stopMediaStreamTracks.stop方法停止基于命令行标记的屏幕共享,但如果您正在使用desktopCapture APIdemo),那么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);
}

答案 1 :(得分:1)

您可以使用stream.onended

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

或者您可以收听结束事件

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

答案 2 :(得分:0)

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

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