我正在尝试用 pjsua 编写软件电话应用程序。一切正常,声音是双向传输的,当我在同一个本地网络 - 192.168.10.XXX 中使用 Asterisk 和软电话时,但是当我将软电话隐藏在 NAT 后面时,我听不到任何传入声音,传出声音正常。
我的应用程序的端点有 ip:192.168.12.233,路由器公共地址是 192.168.10.216,Asterisk - 192.168.10.15。路由器上的端口转换配置为转发 SIP 的 5060 端口和 RTP 的 4000-5000 端口。我尝试在 pjsua 配置中设置 ip public 地址,但没有效果。
这是来自我的应用程序的 INVITE SIP 消息,我认为问题在于包含错误 IP 地址的 SDP 'c' 字段。您知道如何在 pjsua 中更改它或如何解决该声音问题吗?也许我应该在 Asterisk 配置中改变一些东西?
INVITE sip:112@192.168.10.15 SIP/2.0
Via: SIP/2.0/UDP 192.168.10.216:40173;rport;branch=z9hG4bKPj1cb51c72-d924-4f3e-9075-6fa17e39b3be
Max-Forwards: 70
From: sip:500@192.168.10.15;tag=c80893bb-4b11-4def-b0e9-59bb82b88630
To: sip:112@192.168.10.15
Contact: <sip:500@192.168.10.216:40173;ob>
Call-ID: cc07dcae-1f51-4fd9-b3b0-508da40b2752
CSeq: 11230 INVITE
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 1800
Min-SE: 90
User-Agent: GMIDFOO00
Content-Type: application/sdp
Content-Length: 350
v=0
o=- 3787399917 3787399917 IN IP4 192.168.12.233
s=pjmedia
b=AS:84
t=0 0
a=X-nat:0 Unknown
m=audio 4000 RTP/AVP 9 8 96
c=IN IP4 192.168.12.233
b=TIAS:64000
a=rtcp:4001 IN IP4 192.168.12.233
a=sendrecv
a=rtpmap:9 G722/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-16
a=ssrc:938347045 cname:56c230b34489dbbe