我想传输(仅发送)一个.wav文件从我的安卓到一个软电话( x-lite ),以便被呼叫的人在x-lite可以听到声音的.wav文件。
场景如下: Android和x都在同一个无线局域网中,并且都连接到FreeSwitch上。我可以用安卓手机打电话给艾丽特。如果这个电话在x上被接受,那么android会发送.wav文件,我可以在wireshark中看到RTP (G.711 PCMU)从电话发送到x。我能听到一些声音,但不是我所期望的。相反,它发出吱吱作响、嘈杂声和嗡嗡声。
那么,在我发送给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流,那么开头如下所示:
........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.W.L...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..q.v.....y....... .......................M....M...h...V...Y...c...l.f.E.*.............................(...E...X...........M...J...5.H.7.5.^...~...j.................(.=.h.........F.....Q...(.........M.....E.X...{...L.2...............:.......Q.......v........................M.................0...S...K...7.+.B.....................&...O...]...........M...r.B.......w...8.Q...?...A...>.).
所以我想它不是空的。信号开始后,一些信号从x-lite发送到android,然后再从android发送一些paket到x-lite.诸若此类
有人能告诉我为什么我听不到声音吗?
(其他解决方案也受到欢迎)编辑:
这是RTPStramSender的MjSip:http://pastebin.com/xU4EdEex的实现
编辑2:我将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的实现
发布于 2013-08-26 05:47:18
https://stackoverflow.com/questions/18257438
复制相似问题