单个UDP数据报中RTP数据包的数量

问题描述 投票:0回答:1

我正在努力在嵌入式MCU(STM32F4)上实现RTP,但在有效传输音频数据(8 kHz,u-law编码)时遇到了麻烦。

对于块音频数据(20ms,160字节),我应该:

  1. 通过单个UDP数据报发送单个RTP数据包(12字节报头+ 160字节音频),或
  2. 在单个UDP数据报上发送多个RTP数据包(因为我们可以在单个UDP MTU中容纳多个RTP数据包)

如果是(2),则在单个UDP数据报中,每160个字节的音频数据应有一个RTP头。例如,5个RTP数据包将是800字节的音频数据-我会发送:

  • RTP_Header->音频数据(160字节)-> RTP_Header->音频数据(160字节)-> RTP_Header->音频数据(160字节...
  • RTP_Header->音频数据(800字节)

[使用LinPhone作为测试的客户端,我注意到有多个Out of Time数据包,而且从我对嵌入式设备讲话到在Linphone上听到它之间都有短暂的延迟;而且我正在尝试跟踪更有效地通过UDP传输数据是否可以解决该问题。当与LinPhone通话并播放我的嵌入式设备时,我没有相同的延迟,事实证明,两者之间的延迟很难在嵌入式MCU上消除回声。

c udp rtp
1个回答
0
投票

鉴于RTP用于实时数据,并且每个RTP有效载荷都用于特定时间,因此将多个(来自不同时间的)RTP数据组合在一起成为同一个UDP包是没有意义的。这意味着每个RTP有效负载都带有一个RTP标头作为前缀,然后该标头立即通过UDP发送。

© www.soinside.com 2019 - 2024. All rights reserved.