WebRTC 是不是为您处理数据包丢失和数据包接收确认等,或者您是不是需要为此编写自己的解决方案?
Posted
技术标签:
【中文标题】WebRTC 是不是为您处理数据包丢失和数据包接收确认等,或者您是不是需要为此编写自己的解决方案?【英文标题】:Does WebRTC handle packet loss and packet received confirmations etc. for you or are you required to write your own solution for that?WebRTC 是否为您处理数据包丢失和数据包接收确认等,或者您是否需要为此编写自己的解决方案? 【发布时间】:2013-11-05 16:58:21 【问题描述】:正如标题所示:WebRTC 是否会为您处理数据包丢失和数据包接收确认等问题,或者您是否需要为此编写自己的解决方案?
我正在编写一个多人点对点游戏,我想知道 webrtc 将如何处理数据包丢失。它会继续广播数据包直到返回确认接收吗?它会发送一个数据包 4 次,并且只有在设定的时间间隔后没有确认时才再次发送?还是留给我编码?
【问题讨论】:
【参考方案1】:这是传输层的责任。 TCP 处理数据包丢失,而 UDP 不处理。默认情况下,WebRTC 使用 UDP,但它可以同时使用这两种协议。
DataChannel 使用另一种称为 SCTP 的协议,该协议在 UDP 之上实现。虽然假设您可以在设置中指定reliable
参数,但它在 Chrome 中还不起作用。
您可以在这里找到更详细的答案:Does WebRTC use TCP or UDP?
你也可以在这里找到一些信息:WebRTC. Real-Time Network Transports
【讨论】:
当您发送实时媒体时,“这是传输层的责任”是完全错误的。有:FEC (en.wikipedia.org/wiki/Forward_error_correction)、PLC (en.wikipedia.org/wiki/Packet_loss_concealment)、RTCP 中的 FIR 数据包,以及其他智能算法来补偿丢失,而无需像 TCP 那样确认流中的每个数据包。 "虽然假设你可以在设置中指定可靠的参数,但它在 Chrome 中还没有工作。" 2022年还是这样吗?还是在此期间情况有所改善? @vortexwolf【参考方案2】:对于语音,它确实处理数据包丢失。
https://bloggeek.me/single-voice-codec-webrtc/ : “Opus 内置了 FEC 和流量控制机制”
【讨论】:
以上是关于WebRTC 是不是为您处理数据包丢失和数据包接收确认等,或者您是不是需要为此编写自己的解决方案?的主要内容,如果未能解决你的问题,请参考以下文章