2

我想将 .wav 文件从我的 android 传输(仅发送)到软电话(x-lite),以便 x-lite 上的被叫方可以听到 .wav 文件的声音。

场景如下:Android和x-lite都在同一个WLAN中,都连接到FreeSwitch。我可以从安卓手机呼叫 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 Stream,开头看起来像这样:

......嗯............-......1......0......,......)......'......0...... ?...=.#.'.$. 。!....................Tm值........................... ..$.............. ......&............ ...... ……………………………………………………………………………………………………………………………………………… ……………………M……=……我……W……J……/………… .............#...<...T...Z...B.................M.. ...#...5....5..............”...... ...... .......5.WL..N............M....C......8.m.'。 R...>...O...p...~...e...I...3... ................... …………………………………………………………………………………………………………………… ..........................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-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

但什么也没发生。我更改了帧大小和帧速率,但噼啪声只会变得更快或更慢

编辑3:RtpPacket的实现: http ://pastebin.com/tDLr5CYF

4

1 回答 1

2

我的怀疑是打包。

此 RFC 告诉您应该如何完成: RFC 5391

事实证明,这有一点帮助,但不是全部。如果有人可以提供帮助并且有效,请接受他的回答而不是我的回答。

于 2013-08-26T05:47:18.997 回答