RTP RFC (3550) interpretation question
我正在执行 RFC 3550 (RTP) 的 Java 实现,但遇到了一个小问题:
在第 11 章第 2 段中,它指出:
(...) A participant MUST NOT assume that the source port of the incoming RTP or RTCP packet can be used as the destination port for outgoing RTP or RTCP packets. When RTP data packets are being sent in both directions, each participant's RTCP SR packets MUST be sent to the port that the other participant has specified for reception of RTCP. (...)
RTP 没有任何机制来通知这些地址和端口(这取决于 SDP 或其他一些设置协议),这会让我将这一段理解为"如果您从来源不明,直接丢弃".
但在第 6.3.3 节中,它基本上说,当接收到带有未知 SSRC 的 RTP 或非 BYE RTCP 数据包时,应将新参与者添加到表中。
总结一下:
所以百万美元的问题是:应该如何处理意外的 SSRC?
所以百万美元的问题仍然值一百万美元。将研究和更新你。同时,如果您找到答案,也请更新我们。
根据我对 RFC 的解释,对您的问题的回答在第 6.3.3 节:
6.3.3 Receiving an RTP or Non-BYE RTCP Packet
When an RTP or RTCP packet is received from a participant whose SSRC is not in the member table, the SSRC is added to the table, and the value for members is updated once the participant has been validated as described in Section 6.2.1.
关于哪个条目应该被认为是有效的:
(...) New entries MAY be considered not valid until multiple packets carrying the new SSRC have been received (see Appendix A.1), or until an SDES RTCP packet containing a CNAME for that SSRC has been received.(...)
我可能遗漏了什么吗? ;)