java - RTP RFC (3550) 解释问题

标签 java rtp

我在做a Java implementationRFC 3550 (RTP)我遇到了一个小问题:

chapter 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 或其他一些设置协议(protocol)),这会让我将这一段理解为“如果您从未知来源接收数据,只需丢弃它”。

但是在section 6.3.3它基本上是说,当收到带有未知 SSRC 的 RTP 或非 BYE RTCP 数据包时,应将新参与者添加到表中。

总结一下:

  1. 当收到未知的 SSRC 时,您应该添加一个新的参与者;
  2. 您不能将数据包的源 IP/端口用作该参与者的数据包目的地;
  3. SDP 没有定义将由每个 RTP 参与者使用的 SSRC;
  4. 您可以手动添加 RTP 参与者(通过其他方式发现),但您不知道 SSRC 是什么。

因此,百万美元的问题是:应该如何处理意外的 SSRC?

最佳答案

  1. 当收到未知的 SSRC 时,您应该添加一个新参与者 --> 只有在按照第 6.2.1 节进行验证后
  2. 您不能将数据包的源 IP/端口用作该参与者的数据包目的地 --> 这就是说您不能期望端点 A 的 RTP/RTCP 对与端点 B 的对相同(除非指定) . (在第 11 节中,RFC 没有讨论 IP 地址。)
  3. SDP 没有定义将由每个 RTP 参与者使用的 SSRC --> 是的,因为 SSRC 可以即时更改。
  4. 您可以手动添加 RTP 参与者(通过其他方式发现),但您不知道 SSRC 是什么。 ???

所以百万美元的问题仍然值(value)一百万美元。会研究和更新你。同时,如果您找到答案,也请更新我们。

关于java - RTP RFC (3550) 解释问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3697994/

相关文章:

webrtc - 从 webrtc session 中提取视频流并转换为 rtmp

java - Android - 如何捕获RTP数据包

iis - RTP 到实时平滑流式传输

java - 使用 JNI 时出现问题 - 生成头文件时出错

java - Hadoop stdout始终为空,写入的字节为零

java - 无法使用 Hibernate 空间将几何对象持久保存到 Oracle

java - 如何从字符串变量中获取小时和分钟?

ffmpeg - Gstreamer rtp 视频混合器,找到了一个工作流水线,但需要改进

javascript - 如何在 WebRTC 音频通话中控制单声道/立体声?

java - Junit实例创建分别通过方法或类