Javascript WebRTC-删除/减少共享视频流的设备之间的延迟?

Javascript WebRTC-删除/减少共享视频流的设备之间的延迟?,javascript,html,real-time,webrtc,latency,Javascript,Html,Real Time,Webrtc,Latency,很抱歉,我没有发布任何代码,但我正在尝试了解更多关于延迟和webRTC,在共享视频流的两个或多个设备之间消除延迟的最佳方法是什么 或者,无论如何,尽可能减少延迟时间 考虑到这一点,我设想将设备的时钟设置为相同的时间,以便延迟来自服务器的请求,这是真正的诀窍吗?我认为除了在一个具有更高带宽和延迟的更好的网络上之外,您无法采取任何措施来提高延迟。如果您在同一个网络或wifi上,那么延迟应该很小 我认为当你的设备处理能力不强时,延迟也会更高,所以他们解码视频的速度不会那么快,但你应该没有什么办法,因为

很抱歉,我没有发布任何代码,但我正在尝试了解更多关于延迟和webRTC,在共享视频流的两个或多个设备之间
消除延迟的最佳方法是什么

或者,无论如何,尽可能减少延迟时间


考虑到这一点,我设想将设备的时钟设置为相同的时间,以便延迟来自服务器的请求,这是真正的诀窍吗?

我认为除了在一个具有更高带宽和延迟的更好的网络上之外,您无法采取任何措施来提高延迟。如果您在同一个网络或wifi上,那么延迟应该很小

我认为当你的设备处理能力不强时,延迟也会更高,所以他们解码视频的速度不会那么快,但你应该没有什么办法,因为这一切都是在浏览器中发生的

您可以做的是尝试不同的编解码器。因此,您必须在发送SDP之前对其进行操作,并重新排序或删除
m=audio
m=video
行中的编解码器。(但在视频编解码器中没有太多选择,只有VP8)

您可以在chrome附带的工具上查看编解码器和网络的性能:
chrome://webrtc-internals/


只需在URL栏中键入即可。

延迟是源(麦克风、摄像头)和输出(扬声器、屏幕)之间路径上步数的函数

更改时钟对延迟的影响为零

您的延误包括:

  • 设备内部延迟-等待屏幕vsync等。。。;这里没什么可做的
  • 设备接口延迟-较短的电缆将为您节省一些时间,但无法测量
  • 软件延迟-您的操作系统和浏览器;您可能可以在这里做一些事情,但您可能不想做,请相信您的浏览器制造商正在尽其所能
  • 编码延迟-更快的处理器在这方面有点帮助,但最大的问题是对于音频之类的东西,编码器必须等待一定数量的音频积累,然后才能开始编码;默认情况下,这是20毫秒,所以不多;最终,您将能够为Opus请求更短的PTIME(控件称之为PTIME),但现在还为时过早
  • 解码延迟——同样,更快的处理器有点帮助,但没什么可做的
  • 抖动缓冲延迟-音频尤其需要在接收器上有一点额外的延迟,这样任何网络抖动(数据包传输速率的波动)都不会造成音频间隙;这通常是你无法控制的,但这并不意味着这是完全不可能的
  • 重新同步延迟-播放同步音频和视频时,如果其中一个因任何原因延迟,则另一个的播放可能会延迟,以便两者可以一起播放;这应该相当小,并且可能超出您的控制范围
  • 网络延迟-这是您可以提供帮助的地方,可能会有很多帮助,具体取决于您的网络配置
当涉及到两个对等点之间的距离时,您无法改变情况的物理特性,但有许多网络特性可以改变实际延迟:

  • 直接路径-如果出于任何原因,您正在使用中继服务器,那么您的延迟将受到影响,可能会受到很大影响,因为每个数据包都不是直接传输的,它需要绕道中继服务器
  • 管道大小-尝试将高分辨率视频塞进一个小管道中是可行的,但是将大的帧内帧塞进一个小管道中会增加一些额外的延迟
  • TCP-如果禁用UDP,退回到TCP会对延迟产生非常可怕的影响,主要是由于数据包丢失的特殊风险,这需要重新传输,并导致后续数据包延迟,直到重新传输完成(这称为线头阻塞);这也可能发生在某些反常的NAT场景中,即使理论上启用了UDP,但这很可能会导致使用中继服务器
  • 更大的网络问题-可能您的对等点位于不同的ISP上,而这些ISP的对等安排较差,因此数据包在对等点之间采用了次优路由;traceroute可能会帮助您确定事情的发展方向
  • 拥塞-可能网络上有一些拥塞;拥塞往往会导致额外的延迟,特别是当它是由TCP引起时,因为TCP往往会填满路由器中的尾部丢弃队列,迫使数据包等待额外的时间;如果您使用的是数据通道,那么也可能会导致自身拥塞。默认情况下,TCP使用的拥塞控制算法与TCP相同,这对实时延迟不利

我确信这不是一个完整的分类法,但这应该给您一个开始。

服务器和客户端之间的延迟不是很难消除吗?你想减少不同客户端之间的偏移量-同步它们吗?@Bergi是的,将所有客户端同步到一起,使它们能够实时/非常真实。你有什么有用的想法吗?我的问题和你的一样。URL是[在此处输入链接描述][1][1]:@Mustnope:(