RTCPeerConnection replaceTrack 仅更改远程对等方的流

RTCPeerConnection replaceTrack only changing stream for the remote peer

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

到目前为止,我可以通过在我的应用程序中切换摄像头或屏幕共享来替换 运行 上的曲目。但我注意到在 2 个浏览器选项卡中,新替换的轨道流仅在 partner/remote 对等方中捕获,而不是在发起者的选项卡中。它只是继续显示旧流,即使流已被替换。

如果发起人也能看到he/she分享的内容就好了。我试过了,但到目前为止没有运气。寻求帮助。

我的代码如下:

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);
        }
    })();
}

提前致谢。

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