首页 > 解决方案 > 增加 webrtc 帧速率以允许虚拟桌面视图

问题描述

是否可以在屏幕共享期间提高 Web RTC 帧速率以允许在 VR 中查看虚拟桌面?当前测试,请求设置为 30,显示桌面到桌面连接的帧速率约为 20 fps,单帧为 17,连接到 Oculus Quest 2 时为 13。在这些速度下,鼠标由源计算机在共享屏幕视图中的实际位置落后于其实际位置,这足以使其非常难以使用。这是尝试设置帧速率的当前代码:


var displayMediaOptions = { video: { frameRate: 30 } };

window.displayMediaStream = 等待 navigator.mediaDevices.getDisplayMedia(displayMediaOptions);


我还尝试了 minFrameRate 并根据其他帖子增加对等连接中的比特率,但没有效果。大多数帖子都讨论了如何降低比特率,还有一些,例如https://github.com/ant-media/Ant-Media-Server/wiki/How-to-improve-WebRTC-bit-rate%3F推荐 10-20 作为最佳帧速率,但如果需要,可以在不破坏所有内容的情况下将其强制更高,还是需要其他解决方案?其他虚拟桌面解决方案需要本地应用程序和/或到源计算机的电缆链接 - 这就是解决方案吗?

标签: webrtcaframeoculus

解决方案


WebRTC 实现拥塞控制:它动态探测网络,并确定可以安全使用的速率。如果探测速率过低,则会降低帧率、降低分辨率或降低视频质量。

除了使用更快的网络之外,还有三种方法可以以分辨率或质量为代价来提高帧速率:

  • 您可以通过将video.heightvideo.width约束传递给来降低捕获分辨率getUserMedia
  • 您可以通过将scaleResolutionDownBy约束传递给来请求对视频进行下采样RTCRtpSender.setParameters
  • 您可以要求速率控制更愿意通过传递 acontentHint来牺牲分辨率和质量RTCRtpSender.setParameters

推荐阅读