使用mjsip/jmf时无法访问本地RTP端口

使用mjsip/jmf时无法访问本地RTP端口,sip,jmf,nat,rtp,mjsip,Sip,Jmf,Nat,Rtp,Mjsip,我使用mjsip创建一个sip会话,以连接到外部voip提供商。然后,我使用RtpManager通过rtp将测试wav文件传输到提供者 程序运行时没有错误,我接听sip呼叫。但是,不传输音频。当我用wireshark诊断网络流量时,我看到一堆RTP流量从我的本地主机(在某种nat后面)到voip提供商,而没有返回 过了一会儿,我从本地主机的提供程序收到ICMP错误“Destination unreachable(Port unreachable)” linphone软件使用相同的本地主机和voi

我使用mjsip创建一个sip会话,以连接到外部voip提供商。然后,我使用RtpManager通过rtp将测试wav文件传输到提供者

程序运行时没有错误,我接听sip呼叫。但是,不传输音频。当我用wireshark诊断网络流量时,我看到一堆RTP流量从我的本地主机(在某种nat后面)到voip提供商,而没有返回

过了一会儿,我从本地主机的提供程序收到ICMP错误“Destination unreachable(Port unreachable)”

linphone软件使用相同的本地主机和voip提供商工作——尽管它使用的是不同的sip堆栈

有什么建议吗

谢谢

D'oh

问题是,当我的呼叫在我的呼叫侦听器类中被接受时,我没有向SIP 200消息发送ACK。因此,voip客户端忽略了相应的rtp请求

public void onCallAccepted(Call call, String sdp, Message resp){
    System.out.println("call accepted");
    call.ackWithAnswer(sdp); //this was the missing line I needed
    this.setupRtpSession(call);
}

希望这能帮助任何有类似问题的人

您已经回答了自己的问题,但是是的,您是对的:被呼叫方/UAS在一段时间后,如果没有收到ACK,就会认为连接无法建立

通知我们UAS的服务器邀请事务将在发送200 OK时进入完成状态。收到ACK将其发送到已确认状态


但是,如果UAS在发送200 OK时出现传输错误或未能及时接收ACK(定时器H触发(默认情况下64*T1=64*500m=32秒),UAS将移动到终止状态。

Hi,我真的很关心你的项目。你能告诉我你是如何使用mjsip进行呼叫的吗?你如何流式传输测试wav文件?