有没有办法使用getUserMedia来减少延迟



在尝试减少WebRTC通信的视频延迟时,我测量了视频捕获和视频显示之间的延迟。

为了防止测量WebRTC所涉及的延迟,我只使用了getUserMedia和显示流的HTMLvideo

我通过每帧显示一个时间戳(使用requestAnimationFrame(,用USB相机记录我的屏幕,并在视频显示和显示的时间戳都可见的地方进行屏幕截图。

平均而言,我测得的延迟为~150ms。这肯定是一个过高的估计(由于呼叫之间的requestAnimationFrame时间(,然而我所做的最小测量大约是120ms,这仍然是很多。

现在,有没有办法减少视频捕获和视频显示之间的延迟?


注意:

  • 我尝试使用另一个视频选择器(窗口的内置选择器(,结果非常接近(平均延迟约145ms(
  • 我尝试了另一种视频设备(我的带镜子的笔记本电脑网络摄像头(,结果不太接近,但在我看来仍然很高(平均延迟约120ms(

通常情况下,这只能在浏览器本身中解决。

requestVideoFrameCallback API正在收集一些数字,如captureTime和renderTime。https://web.dev/requestvideoframecallback-rvfc/有一个很好的描述,https://webrtc.github.io/samples/src/content/peerconnection/per-frame-callback/将它们可视化。

最新更新