VoIP 呼叫在不同的网络中不起作用(使用 PJSIP 和 Kamailio 服务器)

Posted

技术标签:

【中文标题】VoIP 呼叫在不同的网络中不起作用(使用 PJSIP 和 Kamailio 服务器)【英文标题】:VoIP calls doesn't work in different networks (Using PJSIP and Kamailio server) 【发布时间】:2015-05-23 20:28:40 【问题描述】:

我已经在 azure 实例上设置了 kamailio 4.2 作为服务器,对于客户端,我正在使用 PJSIP 库来支持 androidios 应用程序。当两个设备都连接到同一个网络时,语音通话似乎运行良好,但是,任何一个设备连接到不同的网络(或者当两个设备都在不同的网络中时),它们都能够在 SIP 服务器上注册,甚至可以在两个设备之间触发和接受呼叫,但两端都听不到音频。 * 我什至设置了 rtpproxy。

谁能帮帮我?

提前致谢。

【问题讨论】:

你能在两个网络中对 SIP 呼叫流进行 Wireshark 跟踪吗?在 SIP 中,各方与 SDP 协商音频流。如果正确,请注意 SDP 中的 IP 地址。 【参考方案1】:

请检查您在 kamailio 配置中提供的 IP 地址,使用外部 IP 地址而不是内部。

【讨论】:

【参考方案2】:

我也遇到过同样的问题。您唯一需要做的就是正确安装和配置 rtpproxy。在 Debian 中进行配置的步骤如下。 1) 安装RTP代理。

 sudo apt-get install rtpproxy

2) 在 Kamailio 中,让它监听 rtpproxy 的 unix 套接字,因为默认情况下 kamailio 需要 UDP。

     vim /etc/kamailio/kamailio.cfg

而不是

 modparam("rtpproxy", "rtpproxy_sock", "udp:127.0.0.1:7722")

使用

 modparam("rtpproxy", "rtpproxy_sock", "unix:/var/run/rtpproxy/rtpproxy.sock")

如果 NAT def 如下所示,请确保在同一文件的顶部:

#!KAMAILIO
#!define WITH_mysql
#!define WITH_AUTH
#!define WITH_USRLOCDB
#!define WITH_PRESENCE
**#!define WITH_NAT**
#!define WITH_TLS
#!define WITH_ACCDB

3)现在启动 rtpproxy

sudo service rtpproxy start

4)重启Kamailio服务

sudo service kamailio start

详细解释,我google了一下,找到了一个博客。您可以放心地看一看。 RTPproxy with ka

【讨论】:

以上是关于VoIP 呼叫在不同的网络中不起作用(使用 PJSIP 和 Kamailio 服务器)的主要内容,如果未能解决你的问题,请参考以下文章

SIP中呼叫转移(tranfer)是怎么回事?请大虾指点,还有VOIP怎么与PSTN和移动网通信的呢???

Alamofire 呼叫在循环内不起作用

使用 CallKit 显示用于拨出 VoIP 呼叫的 iOS 本机呼叫 UI

GPS坐标在使用网络的黑莓9800中不起作用

用于构建 VOIP 电话呼叫的 Java SipServlet(在计算机和模拟电话/移动设备之间)

soap_client 呼叫不起作用,因为我可以连接我