我在两个客户端之间建立了 SIP 会话。我在 wireshark 上观察了它们之间的 RTP 跟踪。对于从客户端 1 流向客户端 2 的 RTP 数据包,“长度”列的值为 172,而对于从客户端 2 流向客户端 1 的数据包,“长度”列的值为 252。客户端 1 和客户端 2 属于不同的公司。客户端 1 运行在 64 位 Ubuntu 12.10 上,而客户端 2 运行在 Ubuntu 10.04 上。我想知道是什么决定了 RTP 数据包的长度。
答案1
我无法给你任何具体的细节,因为正如我在我的笔记中所说,这取决于大量因素(包括编解码器,静音抑制的存在以及采样率),但如果你想要一个起点,请看一下RFC3551
。
以下是其中几句相关内容:
A G729 RTP packet may consist of zero or more G.729 or G.729 Annex A frames, followed by zero or one G.729 Annex B frames. The presence of a comfort noise frame can be deduced from the length of the RTP payload. The default packetization interval is 20 ms (two frames), but in some situations it may be desirable to send 10 ms packets.
The RTP timestamp clock rate is always 90,000, independent of the sampling rate. MPEG-1 audio supports sampling rates of 32, 44.1, and 48 kHz (ISO/IEC 11172-3, section 1.1; "Scope"). MPEG-2 supports sampling rates of 16, 22.05 and 24 kHz. The number of samples per frame is fixed, but the frame size will vary with the sampling rate and bit rate.
答案2
阅读本文可能会得到一些答案: