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 是不是为您处理数据包丢失和数据包接收确认等,或者您是不是需要为此编写自己的解决方案?的主要内容,如果未能解决你的问题,请参考以下文章

WebRTC音频系统 音频发送和接收

UDP 协议 C# UdpClient乱序接收数据包丢失的问题 Socket ReceiveBufferSize

webrtc音视频解析流程分析

WebRTC 的音频网络对抗概述

socket编程中的接收数据丢失问题

WebRTC 音频抗弱网技术(下)