Android: Sende .wav über RTP (G.711 PCMU) an SIP-Phone. Sehr lauter, knisternder Sound basierend auf SipDroid / MjSIP

Ich möchte eine .wav-Datei von meinem Android-Gerät an ein Softphone (x-lite) senden (nur senden), damit die auf x-lite angerufene Person den Ton der .wav-Datei hören kann.

Das Szenario sieht folgendermaßen aus: Android und x-lite befinden sich beide im selben WLAN und sind beide mit FreeSwitch verbunden. Ich kann x-lite vom Android-Handy aus anrufen. Wenn der Anruf auf dem x-lite angenommen wird, sendet das Android-Gerät die WAV-Datei und ich kann in Wireshark sehen, dass RTP-Pakete (G.711 PCMU) vom Telefon an x-lite gesendet werden. Ich kann ein Geräusch hören, aber nicht das, was ich erwarten würde. Stattdessen ist es knisternd, laut und einige Pieptöne.

Gibt es also ein Problem mit dem SDP, das ich an das x-lite sende?

v=0
o=sip:[email protected] 0 0 IN IP4 192.168.2.100
s=MySession
c=IN IP4 192.168.2.110
t=0 0
m=audio 8000 RTP/AVP 0 8 101
a=rtpmap:101 telephone-event/8000

Oder ist das Problem die Art und Weise, wie ich die .wav verschicke?

DatagramSocket socket = null;
RtpStreamSender sender = null;
int port =8000;
int payload_type = 0;
int frameSize = 64;
int frameRate =32; 
socket = new DatagramSocket(port);
FileInputStream audioInput = new FileInputStream(f); //f is the .wav
sender = new RtpStreamSender(audioInput, true, payload_type, frameRate, frameSize, remoteAddress, remotePort);
sender.setSyncAdj(2);
sender.start();

Wenn ich UDP Stream in Wireshark folge, sieht der Anfang so aus:

........ M ... RIFF .... WAVEfmt ........ D ........... data0 ........... .................... M ............................. .............................................> M ... .................................................. .....................] M ........................... ............................................... | M. .................... ....................... ..... .. ..................... M ........... ................. ........ ..................................... M .... .................................................. ..... ............... M ............................. ..................... + ... 5 ... 8 ........... M ... 6 ... + .'...-... (..... # ...-... + ... ................... ........ ........... M .............................. ........................................... 6M ...... ... ... ............................................ ................ UM ...........-... 1 ... 0 ..., ...) ... '. ..0 ...? ... =. #. '. $. .! .................... tM ........................... .. $ ....................... ..... & .......... .... M ... .................................................. ........., ........... M ... = ... I ... W ... J ... / ........ ............. # ... <... T ... Z ... B ................. M .. ... # ... 5 ... 5 ...................... "... ..... ....... 5.WL..N ........... M ... C ... 8.m." R ...> ... O ... p ... ~ ... e ... ich ... 3 ................................ M .................... ............................... ................... .... M ... ... 5 ... R ... L ... 3 ... / ... B ... Z ... b ......X...B...!.........{............MM.........$...2...(........................................................lM...............................-.!.R.J.].s.Z.t.U.c.b..qv .... y ........... M ... h ... V ... Y ... c ... lfE * .......... ................... (... E ... X ........... M ... J ... 5.H .7.5. ^ ... ~ ... j ................. (. =. H ......... F ..... Q ... (......... M ..... EX .. {... L.2 ...............: ..... ..Q ....... v ........... ............. M .............. ... 0 ... S ... K ... 7. +. B ..................... & ... O ...] ........... M ... rB ...... w ... 8.Q ...? ... A ...> ......... ..........) ... /.

Also ich denke es ist nicht leer. Nach dem Beginn des Signals wird ein Signal vom x-lite zum Android gesendet und dann wieder ein paar Pakete vom Android zum x-lite ... und so weiter

Kann mir jemand einen Hinweis geben, warum ich den Ton nicht höre?

(Andere Lösungen sind auch willkommen) Edit:

Dies ist die Implementierung von RTPStramSender von MjSip:http://pastebin.com/xU4EdEex

Edit 2: Ich habe den SDP wie im RFC geändert zu:

     m=audio 54874 RTP/AVP 96 97 0 8
     a=rtpmap:96 PCMU-WB/16000
     a=rtpmap:97 PCMA-WB/16000
     a=rtpmap:0 PCMU/8000
     a=rtpmap:8 PCMA/8000

Aber nichts ist passiert. Ich habe die Framesize und Framerate geändert, aber das Knistern wird nur schneller oder langsamer

Edit 3: die Implementierung von RtpPacket:http://pastebin.com/tDLr5CYF

Antworten auf die Frage(1)

Ihre Antwort auf die Frage