使用Xmpp Server在xamarin中开发VoIP应用程序

时间:2016-08-09 08:38:31

标签: mono xmpp voip

我想用Xamarin和Xmpp服务器开发一个VoIP应用程序。 到目前为止,我发现的唯一的事情是openfire和服务器端的“jitsi meet”以及客户端的矩阵。但矩阵与语音流无关,仅用于短信,“jitsi meet”没有.net客户端的任何sdk。 我也找到了red5pro,但是它有本地android和ios开发平台的客户端sdks,对Mono没有任何帮助。

那么我应该寻找什么?!

1 个答案:

答案 0 :(得分:1)

首先,让我们澄清一些基础知识:

  • openfire是一个XMPP服务器。基本上,这就是服务器端所需的基本VoIP支持。 替代方案包括ejabberdProsody
  • jitsi meet essentialy已经是一个VoIP应用程序,所以如果你想开发自己的,你真的不需要它。
  • " Jitsi Videobridge"另一方面,可以用于为视频会议提供中继服务器。对于使用简单VoIP应用程序的第一步,您也不需要,但如果您希望您的用户能够与许多参与者一起创建视频会议,那么这会有所帮助。

    (解释:通常,当您创建P2P视频会议时,您 有两种选择:首先,所有用户都将视频数据发送给所有用户 参与者(每个人都需要大量带宽),或者你选择一个 参与者("主持人")接收每个视频流 参与者端将其发送给每个其他参与者。在第二 例如,普通参与者只需上传一次他的流 下载n个流,而主机完成大部分工作 - 仅限于此 一个用户需要高带宽。 Jitsi Videobridge可以在服务器上运行并充当此会议主机(通常服务器具有比家庭用户更好的带宽),因此没有参与者必须充当主机。 在简单的VoIP应用(没有视频)中,这可能不是必需的,因为音频流通常比视频流小得多。)

现在,正如我上面所说,为了编写一个VoIP应用程序,你基本上只需要一个XMPP服务器(openfire,韵律和ejabberd应该足以满足这个用例),一个支持 Jingle的客户端库和RTP媒体流的客户端库(传输和显示)。 Jingle是XMPP协议扩展的名称,它支持P2P数据流的协商,因为它们是VoIP呼叫所需的。 相关协议规范:

所以你需要找到的是一个支持jingle协议的XMPP库。 C# Matrix XMPP SDK(不要与" Matrix协议"混淆,这是一个不同的协议,与XMPP无关,除了有一个共同的目标)是这样一个库的一个例子。根据他们的网站,有Jingle的支持,但我找不到任何关于它的文档。 但是,正如我上面提到的,Jingle只是关于如何协商数据流,而不是数据流和VoIP本身。 那么可能的库可以帮助你解析设置RTP数据流所需的Jingle XMPP消息。 但是,要显示和传输RTP流,您需要其他库。为此,请查看以下SO问题和答案:

我希望我能给你一些有用的提示......