Webrtc 库兰托室内屏幕共享

Webrtc 库兰托室内屏幕共享,webrtc,kurento,Webrtc,Kurento,我目前在与我加入的任何Kuranto房间共享屏幕时都面临一些问题。目前,我正在使用repo()并对代码进行修改,以帮助将屏幕共享conept附加到应用程序 目前,我能够做到以下几点: 在页面上添加共享屏幕按钮(超级简单) 获取单击共享屏幕按钮时出现的屏幕/窗口弹出窗口(使用muaz khan()提供的getScreenId.js) 选择所需的应用程序/窗口后,将其显示为本地流供用户使用(以实际查看共享的内容),然后重新创建rtc连接 我面临的问题是,当另一个同伴加入房间时,我得到的是房间中最初参

我目前在与我加入的任何Kuranto房间共享屏幕时都面临一些问题。目前,我正在使用repo()并对代码进行修改,以帮助将屏幕共享conept附加到应用程序

目前,我能够做到以下几点:

  • 在页面上添加共享屏幕按钮(超级简单)
  • 获取单击共享屏幕按钮时出现的屏幕/窗口弹出窗口(使用muaz khan()提供的getScreenId.js)

  • 选择所需的应用程序/窗口后,将其显示为本地流供用户使用(以实际查看共享的内容),然后重新创建rtc连接

  • 我面临的问题是,当另一个同伴加入房间时,我得到的是房间中最初参与者的网络摄像头流,而不是屏幕共享。在实施过程中我是否遗漏了什么?如果有人能帮我,我们真的会帮上忙吗

    以下是我实现的代码片段:

    在index.html中:
    
    共享屏幕
    

    在客户端js代码中: ```

    ```

    例如:

    如果PeerA先加入房间并共享桌面,PeerB加入同一房间,那么PeerB将看到PeerA的网络摄像头流,而不是桌面(已共享)。
    P.S.PeerA实际上能够看到桌面被共享,因为某种原因,发送到PeerB的流是网络摄像头,而不是共享屏幕。

    好的。所以,事实证明,在屏幕共享中,您所需要做的就是玩流

    事情是这样的:

    客户端:

  • 调用getUserMedia()以首先获取音频(使用音频约束n调用)

  • 接下来,您需要调用getScreenId(),该函数将返回“screen”流。函数返回屏幕约束

  • 现在使用这些约束,使“选项变量ans”作为“屏幕”传递“sendSource”

  • 致电:

  • new kurentutils.WebRtcPeer.webrtpeersendrecv(选项、函数(错误)

  • 函数的回调必须调用generateOffer(它将具有“offer”)

  • 生成websocket调用所需的消息

  • 服务器端:

  • 现在在服务器端,首先“释放”当前userSession的传出端点,如下所示:
  • userSession.outgoingMedia.release();

  • 然后,您需要删除房间中剩余ppl的“传入端点”,如下所示:

     for (var i in usersInRoom) {
       var user = usersInRoom[i];
       // release viewer from this
       if(user.id == userSession.id){
         continue;
       }
       user.incomingMedia[userSession.id].release();
       delete user.incomingMedia[userSession.id];
     }
    
  • 现在创建一个新端点,并将其设置为当前usersessions的传出端点

  • 在此之后,执行发送当前视频和接收其他视频所需的步骤


  • 注意:记住确保“div”没有重复“显示流时html页面上的元素。这会导致一些冲突,并且您不会在其他屏幕上收到屏幕共享

    您是如何实现屏幕共享的?它是否适用于最新版本的浏览器,如chrome和firefox?您能否在Github中共享您的代码?谢谢。”
     for (var i in usersInRoom) {
       var user = usersInRoom[i];
       // release viewer from this
       if(user.id == userSession.id){
         continue;
       }
       user.incomingMedia[userSession.id].release();
       delete user.incomingMedia[userSession.id];
     }