Add Reliable Voip service to Openfire(SIP or Jingle?)

Hi,

I’m intrested to add a reliable voice/video call feature to my xmpp service run on Openfire server.

After some search and investigate on this topic I finally reached the solution described bellow,

Please read and give your suggestion on it as it would be helpful for others and Also Openfire development.

Here are the steps of my solution:

1- Run an SIP server (eg. kamailio) next to openfire Jabber server.

2- Write an openfire plugin to add account to SIP server for any Openfire user with the same username and password.

3- In the client side, develop application parts to work with SIP. and login to SIP account next to the Jabber account Login.

4- Whenever client want a voice/video call try to connect to SIP server and request call using that server.

Is it a good and simple solution for having reliable and good qualilty voice and video call in an XMPP service? Or you prefer using Jingle Extension to do so?

Or you prefer another solution that I forgot to explain?

Please discuss on this topic and give your opinions on the following fields:

1- Why you prefer one method over another?

2- What is the steps to make that solution?

3- What resources and sample code could you give to make that solution?

4- Is there any working example of that solution?

Thanks for your contribution on this topic

Best Regards

I’m not a developer, so i don’t know which way is better. Maybe Dele will chip in (the author of Jitsi Videbridge plugin https://community.igniterealtime.org/blogs/ignite/2014/05/01/jitsi-videobridge-v er-130 )

Thanks for your advice,

Actually I’m going to develop my android xmpp client to serve video/voice call, but seems work as a browser based solution, because it needs Chrome! but actually my app is a JAVA android App, and using webview is not so pretty as my opinion, or mybe there is other solution to implement jitsi for JAVA.

I’ll send PM to Dele and ask him to contribute in this discussion.

Best Regards

Does Spark still support jingle using a STUN proxy?

I did use it a long time ago but the voice quality was poor.

Thank you all for contribution,

as “wroot” adviesed I send a PM to “Dele” and still waiting for his respond.

Don’t you think let dedicated SIP server (eg. kamailio) serve all VOIP capability is ok? Has you ever tried it out?

I read some articles with the topic around XMPP vs SIP or XMPP Plus SIP and they almost have encouraged to do separate things (Messaging-Presence and VOIP) with separate protocols and servers, what do you think of this opinion?

I haven’t work on Spark client, I have developed my own Android Jabber Client base on aSmack library.

1- Run an SIP server (eg. kamailio) next to openfire Jabber server.

You can if you wish to, I however use the rayo plugin which has a SIP server and audio bridge for audio conferences

2- Write an openfire plugin to add account to SIP server for any Openfire user with the same username and password.

That is what the SIP plugin does.

3- In the client side, develop application parts to work with SIP. and login to SIP account next to the Jabber account Login.

That is what the SIP plugin for Spark does. It does need an to be updated to support echo cancellation and is best to just replace the media stack with libjitsi.

The Rayo plugin has the jVoicebridge engine and also does logins to SIP accounts and enables a web application to make SIP calls via webRTC using the audio bridge. You can have as many SIP end points on the calls as your server hardware can support. It only supports audio calls and has some interesting features like support for the OPUS codec and 3D audio.

4- Whenever client want a voice/video call try to connect to SIP server and request call using that server.

The Jitsi videobridge plugin does the same with video/audio, but has limited SIP support. It does not yet support the SIP plugin, but does have a SIP server and has unfinished code to handle Jingle and SIP video. It can add SIP audio calls to a video conference.

Is it a good and simple solution for having reliable and good qualilty voice and video call in an XMPP service? Or you prefer using Jingle Extension to do so?

Or you prefer another solution that I forgot to explain?

Please discuss on this topic and give your opinions on the following fields:

1- Why you prefer one method over another?

2- What is the steps to make that solution?

3- What resources and sample code could you give to make that solution?

4- Is there any working example of that solution?

I don’t use Jingle because it is peer to peer. I always have a audio or video bridge in the middle (openfire) in order to support multi-user conversations and server-side media recording which is critical for me. It has the disadvantage that this approach does not scale, under 500 concurrent calls (audio) and under 250 calls (video) per cluster node.

The rayo plugin does supprt direct SIP back to back calls without the use of the audio bridge and this should scale better and probably as good as normal IP PBX like Asterisk , but I don’t use the feature.

Both rayo and jitsi videobridge plugins have template sample web applications that show their features.

Hi Dele,

Thanks in advance for your descriptive reply,

As I menthioned before, I have and Android XMPP client that works fine and want to add video/voice calls to it.

I found the following resources about rayo maybe helpfull for others:

http://xmpp.org/extensions/xep-0327.html

http://www.rayo.org/

As I undrestand from the above links:

1- Rayo is a protocol for making & controlling calls based on XMPP supported structur (), am I right? Could you please decribe me simpiified if I have not undrestood the subject well?

2- I’m a little confused about implementation of the solution.

Because I need video and voice calls I must first setup an SIP proxy/server. Then use Rayo to controll voice ad video calls over SIP using XMPP packets,am I right?

I have installed Rayo plugin to see its features and settings and it prompts for a public IP but have already has a VPS with a public IP, I found no solution on it!

The problem is I don’t know Rayo well and how to use it for request voice or video call and make call and there is not a sample code for android! but existing JavaClient is out there, I haven’t looked around it yet (https://github.com/rayo/rayo-java-client)

Could you please give me more description on Rayo or any better referece if exists?

Any Help would be appreciated

Best Regards

Vahid’s latest reply contained links, so it had to be approved by a moderator. I’m adding this reply to bump the thread. Because users subscribed to this thread do not get notifications after the post is approved.

Thanks wroot,

My Post is now approved and I’m waiting for friends to reply,

Thanks you ALL for your contribution.

Best Regards

Thanks wroot,

My Post is now approved and I’m waiting for friends to reply,

Thanks you ALL for your contribution.

Best Regards

The simple answer to your questions is for you to implement Jingle in your Android application using asmack. It will give you audio and video.

Hi Dele,

Do you think it is a reliable solution for video and voice call under Mobile Networks (low speed)?

As I have searched around asmack jingle implementation, It’s old and not under development any more,it true?

could you please introduce me any other lib for jingle android?

actually i see no implementation of jingle in any opensource android client.

on computer i am able to get voip through jisti spark or the jisti videobridge for conferences.

on android/iphone : i found no opensource client with jingle to recommend

i was thinking about :

  • xmpp for messaging
  • sip for VOIP on android/iphone

i understood that the rayo plugin in openfire is enough to pass a SIP call for each openfire user.

actually i cannot make this to work properly.

and the documentation for rayo plugin is very short.

is there any documentation available somewhere ?

to dele

The Rayo plugin has the jVoicebridge engine and also does logins to SIP accounts and enables a web application to make SIP calls via webRTC using the audio bridge. You can have as many SIP end points on the calls as your server hardware can support. It only supports audio calls and has some interesting features like support for the OPUS codec and 3D audio.

this would be very enough for me)

where to find some documentation about this ?

The Jitsi videobridge plugin does the same with video/audio, but has limited SIP support. It does not yet support the SIP plugin, but does have a SIP server and has unfinished code to handle Jingle and SIP video. It can add SIP audio calls to a video conference.

this is even better for video sip but it does not seem fully integrated already

if rayo plugin is not enough for video sip call,

as an external SIP server

what would be your recommendation for “easy” deployment and maintenance. (few users)

repro, kamailio, freeswitch ?

is there anyone still interested in that ?

what did you finally choose vahid ?