当我捕捉屏幕时,webrtc速度问题

问题描述 投票:-1回答:1

正在开发一个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功能,以避免发送无用的流,但仍然没有任何变化。

javascript html webrtc p2p
1个回答
1
投票

你的限制条件是什么?getDisplayMedia? 也许你发送了 "太多 "的视频内容,从而拖慢了一切。

[编辑]

根据你的评论,你从屏幕上录制了音频,也从麦克风上录制了音频。也许从屏幕录制中删除音频轨道?

你也可以使用选项来减小视频的大小。(这需要使用 getUserMedia 而不是 getDisplayMedia)

video:{
            width: { min: 100, ideal: width, max: 1920 },
            height: { min: 100, ideal: height, max: 1080 },
            frameRate: {ideal: framerate}
        }

也许帧率较低? 试着缩小尺寸,看看是否也有帮助:)

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