繁体   English   中英

如何使用 PJSIP 在 INVITE SDP 中更改 RTP 媒体 stream 地址?

[英]How to change RTP media stream address in INVITE SDP using PJSIP?

我正在开发一些基于 PJSIP 的软电话应用程序并遇到这样的问题:当应用程序通过 VPN 运行时,我的 LAN 接口地址出现在 session SDP 属性中,而不是 SIP 用来建立连接的 VPN 接口地址。 结果,连接建立后,B方试图将stream RTP包发送到未知地址。 当然,我可以配置 PBX 来处理我的应用程序,就像它在 NAT 之后一样,以解决这个问题。 但我想知道的是:有没有什么干净的方法(不像在发送前修改 SDP 文本)在应用程序端设置 RTP 连接地址? 因此,当应用程序通过 VPN 注册时,它将使用 VPN 网络接收到的地址。

这是邀请的一部分:

INVITE sip:someoneB@10.125.1.150:5060;transport=udp SIP/2.0
Via: SIP/2.0/UDP 10.125.1.79:61589;rport;branch=z9hG4bKPja32fd2e9e5cc426cb0b44c973b620d8b
Max-Forwards: 70
From: sip:someoneA@10.125.1.150;tag=ca6940355e7f42f29afd2aa86add5c6f
To: sip:someoneB@10.125.1.150
Contact: <sip:someoneA@10.125.1.79:61589;ob>
...
Content-Type: application/sdp
Content-Length:   432

...
m=audio 4000 RTP/AVP 0 9 96
c=IN IP4 192.168.1.107
b=TIAS:64000
a=rtcp:4001 IN IP4 192.168.1.107
...

我在这个例子中的目标是在 SDP 部分设置 10.125.1.79 地址。

PJSIP如何选择媒体接口stream? 如何在 session 期间更改 RTP stream 对应的 SDP 属性? 库是否提供了一些配置或功能来实现这一点?

我发现,将pjsua_acc_config结构的选项allow_sdp_nat_rewrite设置为 true 可以解决我的问题。 现在它在 VPN 网络上按预期工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM