我正在努力在嵌入式MCU(STM32F4)上实现RTP,但在有效传输音频数据(8 kHz,u-law编码)时遇到了麻烦。
对于块音频数据(20ms,160字节),我应该:
如果是(2),则在单个UDP数据报中,每160个字节的音频数据应有一个RTP头。例如,5个RTP数据包将是800字节的音频数据-我会发送:
[使用LinPhone作为测试的客户端,我注意到有多个Out of Time数据包,而且从我对嵌入式设备讲话到在Linphone上听到它之间都有短暂的延迟;而且我正在尝试跟踪更有效地通过UDP传输数据是否可以解决该问题。当与LinPhone通话并播放我的嵌入式设备时,我没有相同的延迟,事实证明,两者之间的延迟很难在嵌入式MCU上消除回声。
鉴于RTP用于实时数据,并且每个RTP有效载荷都用于特定时间,因此将多个(来自不同时间的)RTP数据组合在一起成为同一个UDP包是没有意义的。这意味着每个RTP有效负载都带有一个RTP标头作为前缀,然后该标头立即通过UDP发送。