webrtc - 增加 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 作为最佳帧速率,但如果需要,可以在不破坏所有内容的情况下将其强制更高,还是需要其他解决方案?其他虚拟桌面解决方案需要本地应用程序和/或到源计算机的电缆链接 - 这就是解决方案吗?
解决方案
WebRTC 实现拥塞控制:它动态探测网络,并确定可以安全使用的速率。如果探测速率过低,则会降低帧率、降低分辨率或降低视频质量。
除了使用更快的网络之外,还有三种方法可以以分辨率或质量为代价来提高帧速率:
- 您可以通过将
video.height
和video.width
约束传递给来降低捕获分辨率getUserMedia
; - 您可以通过将
scaleResolutionDownBy
约束传递给来请求对视频进行下采样RTCRtpSender.setParameters
; - 您可以要求速率控制更愿意通过传递 a
contentHint
来牺牲分辨率和质量RTCRtpSender.setParameters
。
推荐阅读
- reactjs - React Native:如何从按钮传递道具?
- android - firebase 消息 onCreate 未调用
- eclipse - 导入 Maven 项目正在改变 src/test/resource 结构
- c - C中的文件读取返回空
- r - 使用 for 循环在 R 中转换列名
- r - rbind RStudio 将第三行名称添加到现有矩阵
- ssl - 在 GKE 上创建 SSL Web 服务的困难
- python - Python 3:获取与 Python 2 struct.pack 输出匹配的 struct.pack 输出
- mysql - MySQL - 基于数量和 ID 的数据删除
- javascript - Node JS 防止用户删除其他用户的产品