VoIP RTP Streaming from/to server (in Java) to/from android
€30-250 EUR
Fermé
Publié il y a presque 9 ans
€30-250 EUR
Payé lors de la livraison
My target is to have a push-to-talk voice app in GSM/UMTS/LTE networks; initially I wanted use multicast addresses and peer-to-peer without overload the server; unfortunatly, after deep investigation, I discovered that multicast is not allowed in GSM/UMTS/LTE networks, therefore I have to use a central server in order to bounce the VoIP packets. I have to send VoIP from 1 android client to a server (PC), and the same VoIP from the server to N android clients.
The server is in Java, it has to receive the VoIP packets from the transmitter Android, and then it has to send the VoIP packets to other N clients; therefore the server is a bouncer of VoIP packets.
My app, on both android and server side, is almost ready, what is missing is the code for the VoIP streaming. I need mainly a Java method, to be included in the server java code, that receives the VoIP packets from 1 android client and resend the same VoIP packets to N android clients.
The parameters of the method will be:
- IP address of android client VoIP sender (the transmitter)
- port of android client VoIP sender
- arraylist containing the N ip addresses of the N android client VoIP receivers
- arraylist containing the N ports of the N android client VoIP receiver
Of course the method has to take into account and solve the tipical VoIP issues: delivery speed, FEC, loss concealment, jitter buffering, etc...
I also read that there are some technics to have a dynamic jitter buffer so to have dynamically the right balance between quality and latency (in stackoverflow I saw also some code example of dynamic jitter buffer...).
The software developper must have deep experience in VoIP and Java, and will have also to suggest me the right/suitable parameters to be used (type of codecs, etc...) for VoIP tuning.
Please find below the code (for android) I use to send the VoIP packets from the transmitter android client to the server. It works because I don't have problems when I use it for individual call sending the VoIP packets directly from Android to Android; the code to receive in android the packets from server is very similar, so I don't recopy it. As you can see I use [login to view URL] .
You will have to modify this code if needed in order to be adapted to the server code.
// ANDROID CODE USED TO SEND VOIP TO SERVER
//Attribute definition
private static final AudioCodec myAudioCodec_COSTANTE = [login to view URL] ;
private static final int myAudioGroupTX_COSTANTE = AudioGroup.MODE_NORMAL ;
private static final int myAudioGroupRX_COSTANTE = AudioGroup.MODE_NORMAL ;
private static final int myRtpStreamTX_COSTANTE = RtpStream.MODE_SEND_ONLY ;
private static final int myRtpStreamRX_COSTANTE = RtpStream.MODE_RECEIVE_ONLY ;
private static final int myAudioManagerTX_COSTANTE = AudioManager.MODE_IN_COMMUNICATION;
private static final int myAudioManagerRX_COSTANTE = AudioManager.MODE_IN_COMMUNICATION;
//Method called for VoIP trasmission
myAudioStream = new AudioStream(localClientIP);
myAudioGroup = new AudioGroup();
myAudioManager = (AudioManager) [login to view URL](Context.AUDIO_SERVICE);
[login to view URL](myAudioGroupTX_COSTANTE);
[login to view URL](null);
[login to view URL](myAudioCodec_COSTANTE);
[login to view URL](myRtpStreamTX_COSTANTE);
[login to view URL](ipaddress_Server, port_Server)
[login to view URL](myAudioGroup);
[login to view URL](myAudioManagerTX_COSTANTE);
[login to view URL](false);
[login to view URL](false);