0

我想使用我编写的简单非 SIP 客户端程序从我的电脑远程拨号,然后 wchich 将命令发送到专有 SIP 客户端,该客户端通过 TCP 连接接受远程命令。然后,专有的 SIP 客户端将使用我的 PC 的 IP 和 SDP 中的端口号拨打远程方用于 RTP。这原则上可行吗?是否有任何可用的开源客户端使用此概念?是否有任何可用的文档(IETF RFC、博客等)。

感谢在这件事上的任何帮助。

4

2 回答 2

0

如果我理解正确,这就是你想要做的:

    TCP              SIP/SDP/RTP
PC <===> SIP client <===========> softswitch

实际上,PC 和 SIP 客户端之间的 TCP 对于信令可能是准确的,但对于媒体则不准确,因为 RTP 媒体流通常通过 UDP 发送。

在我看来,第一步是确保您的软交换机能够接受将 RTP 数据包发送到与 SIP 客户端不同的 IP 地址(我认为大多数出于安全原因拒绝)。如果它接受并且您的 SIP 客户端和您的 PC 之间没有 NAT,您应该能够将 RTP 流直接发送到您的 PC。在这种情况下,您必须检索 RTP 数据包,最终重新排列它们,解压缩它们的有效负载并将它们提供给您的扬声器。

如果您的软交换机不想将 RTP 数据包发送到与 SIP IP 地址不同的 IP 地址,那么您必须将 RTP 数据包从您的 SIP 客户端转发到您的 PC。但是,如果您不能修改您的 SIP 客户端来执行此操作(并且可能是因为它是专有软件),那么您可能会陷入困境。

要测试您的软交换是否接受向非预期 IP 地址发送 RTP 数据包,您可以使用sipp并指定与 SIP 信令 IP 地址不同的远程媒体 IP 地址。

于 2012-06-21T08:48:52.090 回答
0

查看pjsip,它是一个适用于所有主要平台的开源跨平台 SIP 客户端,具有 C 语言的 API 和 python 的 API 包装器,无论你喜欢哪个。他们的网站上也有例子。将你的 TCP 解析代码链接到 pjsip 并调用它的函数来发起调用,你可以在他们的网站上找到如何做

于 2012-03-02T14:17:35.270 回答