问题描述
是否可以在屏幕共享期间提高 Web RTC 帧速率,以允许在 VR 中查看虚拟桌面?当前测试,请求设置为 30,显示桌面到桌面连接的帧速率约为 20 fps,帧速率为 17 fps,连接到 Oculus Quest 2 时为 13。在这些速度下,鼠标由控制源计算机落后于其在共享屏幕视图中的实际位置,足以使其很难使用。这是尝试设置帧速率的当前代码:
var displayMediaOptions = { 视频: { 帧率:30 } };
window.displayMediaStream = await navigator.mediaDevices.getdisplayMedia(displayMediaOptions);
我还尝试了 minFrameRate 并根据其他帖子增加了对等连接中的比特率,但没有效果。大多数帖子讨论了如何降低比特率,有些帖子,例如https://github.com/ant-media/Ant-Media-Server/wiki/How-to-improve-WebRTC-bit-rate%3F推荐 10-20 作为最佳帧率,但如果需要,可以在不破坏一切的情况下强制提高它,还是需要其他解决方案?其他虚拟桌面解决方案需要本机应用程序和/或到源计算机的电缆链接 - 这是解决方案吗?
解决方法
WebRTC 实现拥塞控制:它动态探测网络,并确定一个可以安全使用的速率。如果探测速率过低,会降低帧率、降低分辨率或降低视频质量。
除了使用更快的网络之外,还有三种方法可以以分辨率或质量为代价来提高帧率:
- 您可以通过将
video.height
和video.width
约束传递给getUserMedia
来降低捕获分辨率; - 您可以通过将
scaleResolutionDownBy
约束传递给RTCRtpSender.setParameters
来请求对视频进行下采样; - 您可以通过将
contentHint
传递给RTCRtpSender.setParameters
来请求速率控制更愿意牺牲分辨率和质量。