我正在尝试使用开源Java SIP客户端Jitsi来做视频聊天。为了消除所有网络和代理问题,我已经设置了我自己的SIP代理Asterisk,两个客户端都在同一个局域网上。我还将Asterisk配置为中继RTP数据包或在对等体之间进行直接通信。
上面的错误来自Asterisk和chan_sip.c:8915 (Asterisk -10.0.0-beta)。Asterisk代码检查端口0
我被上面的问题卡住了。我可以尝试修改Jitsi代码不使用端口0,但想知道是否有更好的方法,如果端口0是一个合法的值开始。
顺便说一句,我成功地用2个Xlite (CounterPath的商业软件)在彼此之间传输H263视频。我不能让Xlite和Jitsi这样做,也不能让两个Jitsi客户端都发送视频。
我想使用Java客户端,因为我更适应Java。我也希望将来能够在Android上重用相同的代码库。
端口设置为0是完全合法的,是SDP提供/应答模型的一部分。事实上,这可能意味着你的SDP报价有问题。例如,如果您支持PCMA编解码器,而对端只支持PCMU,他将拒绝端口设置为0的SDP请求。报价被拒绝可能有很多原因,但编解码器不兼容可能是最常见的原因。
如果您想要真正调试它,您可能需要查看数据包(例如使用Wireshark)。
你问"但我想知道是否有更好的方法,如果端口0是一个合法的值,以。"
开头端口0在SDP中完全合法。特别地,RFC 3264 section 5.1中的SIP的offer/answer模型说
A port number of zero in the offer indicates that the
stream is offered but MUST NOT be used.