我想将.wav文件从我的Android传输(仅发送)到软电话(x-lite),以便x-lite上的被叫人可以听到.wav文件的声音。
情况如下:Android和x-lite都在同一WLAN中,并且都连接到FreeSwitch。我可以从Android手机拨打x-lite。如果在x- lite上接受了呼叫,则android将发送.wav文件,我可以在Wireshark中看到RTP包(G.711 PCMU)已从电话发送到x- lite。我可以听到一些声音,但我听不到。而是它的脆脆,嘈杂和一些蜂鸣声。
那么我发送到x-lite的SDP中有问题吗?
v=0 o=sip:1002@192.168.2.110 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
还是我发送.wav的方式出现问题?
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();
如果我在Wireshark中遵循UDP流,则开始看起来像这样:
..... UM ...........-… 1 … 0 …,…)…’… 0 … ?… =。#。’。$。。!....................Tm值........................... .. $ ....................... .....&.......... .... M … ....................................................................................... .........,........... M … = …我… W … J … / ..... .............#… <… T … Z … B ........ M .. …#… 5 … 5 ................... …“ ............. 5.WL..N ........... M … C … 8.m。’。 [R … > … O。。。p …〜… E …我… 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 …> ...................)… /。
...X...B...!.........{............MM.........$...2...(........................................................lM...............................-.!.R.J.].s.Z.t.U.c.b.
所以我想它不是空的。信号开始之后,一些信号从x-lite发送到android,然后再次从android-x-lite发送一些小包…依此类推
谁能给我一个提示,为什么我听不到声音?
(也欢迎其他解决方案)编辑:
这是来自MjSip的RTPStramSender的实现:http ://pastebin.com/xU4EdEex
编辑2:我将RFC中的SDP更改为:
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
但是什么也没发生。我更改了帧大小和帧率,但the啪声只会变快或变慢
编辑3:RtpPacket的实现:http ://pastebin.com/tDLr5CYF
我的怀疑是打包。
该RFC告诉您应如何完成: RFC 5391
事实证明,这有所帮助,但并非一直如此。如果有人可以帮助并且有效,请接受他的回答,而不是我的回答。