我是 RTP/RTCP 协议的新手,听说 RTCP 将在 RTP 数据包之间定期发送以用于某些诊断目的。假设如果一个 RTP 数据包丢失,它可以通过序列号和 RTCP 数据包中的报告来识别。但是如果 RTCP 数据包本身丢失了怎么办?让我们以“BYE”格式(表示参与结束)为例。
问问题
2095 次
1 回答
1
在 RTP 会话期间,通过接收 RTCP 报告(发送方和接收方报告)来建立和维护一个 SSRC(接收方和发送方都有自己的 SSRC)数据库。
因此,在 RTCP 报告被丢弃的情况下,根据丢弃发生的原因,可能会发生许多事情:
- 源离开 RTP 会话,其 BYE RTCP 数据包被丢弃。由于源离开会话,它将超时,因为它不再发送 RTCP 报告并从参与者数据库中删除
- 源脱机并且不再发送任何 RTCP 报告。源将超时并从参与者数据库中删除
- 单个 RTCP 报告被丢弃。这不足以使源超时,RTCP 处理将在下一个收到的报告时恢复。发件人报告仅包含单调递增的数据字段,因此丢弃仅意味着更粗粒度的更新将在丢弃期之后到达。接收方报告既有单调递增的字段,也有引用上次报告的字段。如果发生包含接收方报告的丢弃,则那些包含与上一个报告相关的数据的字段将丢失,因为它仅存在于该报告的该实例
于 2015-03-25T03:50:46.637 回答