SIP 数据包中的源/目标和其他信息。由于使用了 SIP 代理,所以 SIP 包的地址和 SIP 头中的信息如:“Via”、“To”和“From”等,与 RTP 地址无关,对吧?(PS,这些字段的真正目的是什么?)
对了,这些信息与你的RTP/RTCP信息无关,这些只是SIP代理的信息和与SIP会话相关的两方相关信息。
SDP中的o= line和c= line有什么区别?RTP 会使用其中之一吗?
O线也是你不需要知道的,它是关于发起者客户信息或标识符的。C= 行保存会话的默认地址,如果您有多种媒体(如 RTP 和 RTCP),这可以是会话级别属性或媒体级别属性。如果它在 SDP 中的会话级别属性,那么它将出现在 m= 行之前。如果会话是非 ICE 会话,则此地址将用于您的媒体。
我必须找到调用方和被调用方的 SDP 中支持的通用编解码器和有效负载类型来确定 RTCP 端口。如果它们支持一种媒体类型的多个编解码器,那么两端是否可以使用不同的编解码器?
您将在 m= 行中找到编解码器相关信息,其中包含该媒体的媒体名称、传输类型和默认端口,如果是非 ICE 媒体,此端口将用于该相应媒体。m= 也将保存与编解码器相关的信息,这些是空格分隔的值。您不能使用不同的编解码器,除非您选择的编解码器与另一个最不可能的编解码器可互操作。
如果涉及 STUN、TURN 或 ICE,我还应该查看什么?
您会发现这些信息为 a= 行,所有 a= 行出现在 m= 行之后,直到 SDP 末尾的另一 m= 行是相应的媒体属性,假设对于候选人,您将看到类似 a=candidate 行的内容作为 ICE候选人,您可能还会看到 a=ice-pwd、a=ice-ufrag 等。假设您有带有 RTP 和 RTCP 组件的音频 m= 行,那么您可能还会看到带有 RTCP 默认端口值的 a=rtcp 行端口,在这种情况下,端口出现在 m= 行是 RTP 默认端口。有关 SDP 的更多详细信息,您可以查看SDP RFC。您还可以查看ICE RFC以获取 ICE 相关的属性详细信息。