WebRTC屏幕共享不止一次,无需重新加载页面

时间:2017-09-13 20:03:34

标签: google-chrome webrtc screensharing

您好我正在开发一个webRTC应用程序。它是一个“视频顾问”,客户与卖家进行视频通话,现在我希望卖家也分享他们的屏幕(不会丢失视频通话)。我设法让它一起工作,但是当客户端完成呼叫并且新客户端到达时,当卖家试图再次共享他的屏幕时(使用这个新客户端)会发生错误。

错误如下:enter image description here

我认为问题在于屏幕共享API不支持在不刷新窗口的情况下结束和重新打开屏幕共享(这就是我想要的,一旦他完成通话就让卖家保持在线并听取而不刷新整个页)。

这是客户离开呼叫时取消屏幕共享的代码:

if(yourConn.getLocalStreams()[1] != null){ 
      var screenStreaming = yourConn.getLocalStreams()[1];
      yourConn.removeStream(screenStreaming);
      screenStreaming.getTracks().forEach(track => track.stop());
} 

我知道这段代码成功停止了屏幕共享,但我不明白为什么当我创建一个新的屏幕共享流时,我发布的错误出现了。我真的需要帮助。

顺便说一下,我正在使用Chrome。

感谢大家的阅读,如果我不清楚,请对不起,这是我的第一个问题。

1 个答案:

答案 0 :(得分:0)

启动和停止屏幕共享肯定不止一次。 InvalidStateError听起来(模糊地),就像你试图重复使用chromeMediaSourceId中传递的chooseDesktopMedia中的id一样多次。这是不可能的afaik你需要再次调用chooseDesktopMedia(并让用户再次选择屏幕)