Kurento在房间中共享屏幕

问题描述 投票:2回答:2

我目前与加入的任何Kurento会议室共享屏幕时遇到一些问题。现在,我正在使用存储库(https://github.com/TribeMedia/kurento-group-call-1)并对代码进行修改,以帮助将屏幕共享概念附加到应用程序。

目前,我能够执行以下操作:

  1. 在页面上添加共享屏幕按钮(超级简单)
  2. 获取单击共享屏幕按钮时出现的屏幕/窗口弹出窗口(使用muaz khan(https://github.com/muaz-khan/getScreenId)的getScreenId.js)>] >>

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

  4. 我面临的问题是,当另一个同龄人加入会议室时,我得到会议室中最初参与者的网络摄像头流,而不是屏幕共享。在实现过程中我缺少什么?如果有人可以帮助我,我们真的会有所帮助!

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

在index.html中: <button id="sharescreen" disabled="disabled" onClick="shareScreen()">Share Screen</button>

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

function shareScreen(){
    var audioConstraints = {
        audio: false,  
        video: true,
    };
    navigator.getUserMedia(audioConstraints, function(stream) {
        initiateScreenSharing(stream);
    }, function(error) {
        console.error("Could not get audio stream! " + error);
    });
}

function initiateScreenSharing(audioStream){
    getScreenId(function (error, sourceId, screen_constraints) {
        console.log("screen_constraints");
        console.log(screen_constraints);
        navigator.getUserMedia = navigator.mozGetUserMedia || navigator.webkitGetUserMedia;
        navigator.getUserMedia(screen_constraints, function (stream) {
            console.log(stream);

            var constraints = {
                audio: true,
                video: {
                    frameRate: {
                        min: 1, ideal: 15, max: 30
                    },
                    width: {
                        min: 32, ideal: 50, max: 320
                    },
                    height: {
                        min: 32, ideal: 50, max: 320
                    }
                }
            };

            var localParticipant = new Participant(sessionId);
            participants[sessionId] = localParticipant;
            localVideo = document.getElementById("local_video");
            var video = localVideo;

            var options = {
                localVideo: video,
                videoStream: stream,
                mediaConstraints: constraints,
                onicecandidate: localParticipant.onIceCandidate.bind(localParticipant),
                sendSource: 'desktop'
            };


            localParticipant.rtcPeer = new kurentoUtils.WebRtcPeer.WebRtcPeerSendrecv(options, function (error) {
                if (error) {
                    return console.error(error);
                }

                // Set localVideo to new object if on IE/Safari
                localVideo = document.getElementById("local_video");

                // initial main video to local first
                localVideoCurrentId = sessionId;
                //localVideo.src = localParticipant.rtcPeer.localVideo.src;
                localVideo.muted = true;

                console.log("local participant id : " + sessionId);
                this.generateOffer(localParticipant.offerToReceiveVideo.bind(localParticipant));
            });

        }, function (error) {
            console.error(error);
        });
    });
}

```

例如:

[如果PeerA第一次加入会议室并共享桌面,而PeerB加入同一会议室,则PeerB将看到PeerA的网络摄像头流而不是桌面(已共享)。附言由于某种原因,PeerA能够真正看到桌面正在共享,而发送到PeerB的流是网络摄像头而不是共享屏幕。

我目前与加入的任何Kurento会议室共享屏幕时遇到一些问题。现在,我正在使用仓库(https://github.com/TribeMedia/kurento-group-call-1)并在...

webrtc kurento
2个回答
1
投票

好的。因此,事实证明,您在屏幕共享中所需要做的就是播放流。

这是怎么回事:


0
投票

您能否分享代码或一些github链接。

© www.soinside.com 2019 - 2024. All rights reserved.