首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android:通过RTP (G.711 PCMU)发送.wav到SipDroid/MjSIP的高噪音、刺耳的声音。

Android:通过RTP (G.711 PCMU)发送.wav到SipDroid/MjSIP的高噪音、刺耳的声音。
EN

Stack Overflow用户
提问于 2013-08-15 16:44:59
回答 1查看 1.9K关注 0票数 2

我想传输(仅发送)一个.wav文件从我的安卓到一个软电话( x-lite ),以便被呼叫的人在x-lite可以听到声音的.wav文件。

场景如下: Android和x都在同一个无线局域网中,并且都连接到FreeSwitch上。我可以用安卓手机打电话给艾丽特。如果这个电话在x上被接受,那么android会发送.wav文件,我可以在wireshark中看到RTP (G.711 PCMU)从电话发送到x。我能听到一些声音,但不是我所期望的。相反,它发出吱吱作响、嘈杂声和嗡嗡声。

那么,在我发送给x-lite的SDP中有什么问题吗?

代码语言:javascript
复制
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的方式?

代码语言:javascript
复制
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更改为:

代码语言:javascript
复制
     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的实现

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-26 05:47:18

我的怀疑是令人兴奋的。

这个RFC告诉您如何实现它:RFC 5391

结果发现这有一点帮助,但并不是全部。如果有人能帮上忙,请接受他的回答,而不是我的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18257438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档