1

我是 RTCPeerConnection (WEBRTC) 的新手,所以请多多包涵。

到目前为止,我能够通过在我的应用程序中切换相机或屏幕共享来替换运行中的轨道。但我注意到在 2 个浏览器选项卡中,新替换的跟踪流仅在合作伙伴/远程对等方中捕获,而不是在发起者的选项卡上。即使流已被替换,它仍会继续显示旧流。

如果发起人也能看到他/她正在分享的内容,那就太好了。我试过了,但到目前为止还没有运气。寻求一些帮助。

我的代码如下所示:

function screenShare(){
    (async () => {
        try {
            await navigator.mediaDevices.getDisplayMedia(
                {
                    cursor: true
                }).then(stream => {
                    // localStream = stream;
                    let videoTrack = stream.getVideoTracks()[0];
                    var sender = senders.find(function(s) {
                        return s.track.kind == videoTrack.kind;
                    });
                    sender.replaceTrack(videoTrack);
                    videoTrack.onended = function(){
                        sender.replaceTrack(localStream.getTracks()[1]);
                    }
                });
        } catch (err) {
            console.log('(async () =>: ' + err);
        }
    })();
}

提前致谢。

4

1 回答 1

1

根据设计,replaceTrack 替换了 RTCPeerConnection 上的流。这不会影响本地视频对象。重置本地视频元素上的 srcObject 以更改它。

于 2021-07-27T18:07:00.917 回答