正在开发一个4个对等的webrtc视频聊天!一切都很好,在这一点上,所以我添加一个屏幕共享未来的网站!当我按屏幕共享,连接变得如此之慢!我以为是因为4个对等的连接,但这种情况只发生在我分享我的屏幕。
当我按下屏幕共享,连接变得如此之慢!我以为这是因为4个点对点的连接,但这种情况只发生在我分享我的屏幕。我试图使用RemoveStream功能,发送相机流,但流仍然滞后。
async function startCapture() {
var audioStream = await navigator.mediaDevices.getUserMedia({audio:true});
var audioTrack = audioStream.getAudioTracks()[0];
let captureStream = null;
try {
captureStream = await navigator.mediaDevices.getDisplayMedia(gdmOptions);
captureStream.addTrack( audioTrack );
} catch(err) {
console.error("Error: " + err);
}
// return captureStream;
if(rtcPeerConn){
rtcPeerConn.removeStream(myStream);
rtcPeerConn.addStream(captureStream);
}
if(rtcPeerConn1){
rtcPeerConn1.removeStream(myStream);
rtcPeerConn1.addStream(captureStream);
}
if(rtcPeerConn2){
rtcPeerConn2.removeStream(myStream);
rtcPeerConn2.addStream(captureStream);
}
if(rtcPeerConn3){
rtcPeerConn3.removeStream(myStream);
rtcPeerConn3.addStream(captureStream);
}
myStream.getTracks().forEach(function(track) {
track.stop();
});
myStream = captureStream;
success(myStream);
}
我甚至尝试从第一个流中删除轨道,像这样的
async function startCapture() {
myStream.getTracks().forEach(function(track) {
track.stop();
});
var audioStream = await navigator.mediaDevices.getUserMedia({audio:true});
var audioTrack = audioStream.getAudioTracks()[0];
let captureStream = null;
try {
captureStream = await navigator.mediaDevices.getDisplayMedia(gdmOptions);
captureStream.addTrack( audioTrack );
} catch(err) {
console.error("Error: " + err);
}
if(rtcPeerConn){
rtcPeerConn.removeStream(myStream);
rtcPeerConn.addStream(captureStream);
}
if(rtcPeerConn1){
rtcPeerConn1.removeStream(myStream);
rtcPeerConn1.addStream(captureStream);
}
if(rtcPeerConn2){
rtcPeerConn2.removeStream(myStream);
rtcPeerConn2.addStream(captureStream);
}
if(rtcPeerConn3){
rtcPeerConn3.removeStream(myStream);
rtcPeerConn3.addStream(captureStream);
}
myStream = captureStream;
success(myStream);
}
正如你所看到的,我使用removeStream功能,以避免发送无用的流,但仍然没有任何变化。
你的限制条件是什么?getDisplayMedia
? 也许你发送了 "太多 "的视频内容,从而拖慢了一切。
[编辑]
根据你的评论,你从屏幕上录制了音频,也从麦克风上录制了音频。也许从屏幕录制中删除音频轨道?
你也可以使用选项来减小视频的大小。(这需要使用 getUserMedia
而不是 getDisplayMedia
)
video:{
width: { min: 100, ideal: width, max: 1920 },
height: { min: 100, ideal: height, max: 1080 },
frameRate: {ideal: framerate}
}
也许帧率较低? 试着缩小尺寸,看看是否也有帮助:)