使用基于 UDP 的 RTP 和设备的专用 router/network 时会有什么延迟?

What latency to expect when having RTP over UDP and a dedicated router/network for the devices?

我现在一直在尝试几种方法,用Java和C++接收和发送音频流,它们都工作正常,但延迟开始排队。 我在理解我做错了什么或一开始我需要什么时遇到了一些问题,经过一些阅读后我发现我需要一个抖动缓冲区,所以在没有什么信息的情况下,我开始使用一个库而不是因为它包含一个抖动缓冲区。

它还大大提高了性能,因为它延迟了数据包,因此网络缓冲区等不会像以前那样排队。

所以我想知道,对于具有基于 UDP 的 RTP 和设备专用 router/network 的延迟,我能期待什么?我有大约 300-1000 毫秒的延迟,这是一个正常的平均值吗?

0,3-1s 延迟是从 phone 到另一个,当从 phones 流式传输到 pc 时,我认为我的延迟低至 0,1-0,3s,是这可能与 phone 具有 "low" 音频、网络和一般处理能力的 phone 便宜有关?

what can I expect as latency having RTP over UDP

测量 RTT (round trip time) that packets travel between endpoints, that's the best possible time you can get. Then there is variance in RTT time and jitter buffer is there to handle this kind of network delays. Usually in VoIP applications jitter buffer adapts dynamically to the rate of packets that being queued from the network. So, if your RTT is in the range of 50ms-250ms and if you send 40ms of sound per RTP 数据包,然后您将获得大约 200 毫秒的延迟。在测试中我发现 200ms 还不错。这是我估计延迟的方式:如果 RTT 在 50 到 250 毫秒之间,那么抖动缓冲区将必须适应最坏的情况,并假设 RTT 大约为 250 毫秒,或者一种方式为 125 毫秒。然后在发送方有额外的缓冲延迟。如果每个数据包发送 40 毫秒的音频,那么您需要增加 40 毫秒的额外延迟,总计 165 毫秒,再加上到处都有处理,在这种情况下 200 毫秒也不错。如果您使用 Android phones,预计 android phones 上的音频播放可能会增加 200 毫秒左右的额外延迟(完全取决于 android 版本和phone 型号)。是的,没错:当您排队等待 os 播放声音时,您实际上可能只在 200 毫秒后听到声音! iPhone 在播放语音时的延迟要小得多(我预计在 20-40 毫秒的范围内)。 当语音对话超过 300-400 毫秒时,您就会真正开始注意到语音对话的延迟。 如果你使用 WebRTC 库,我可能会获得最好的 voip 质量。