当前位置: 首页 > 面试题库 >

Android:通过RTP(G.711 PCMU)将.wav发送到SIP电话,基于SipDroid / MjSIP的声音非常吵杂

潘皓
2023-03-14
问题内容

我想将.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-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

事实证明,这有所帮助,但并非一直如此。如果有人可以帮助并且有效,请接受他的回答,而不是我的回答。



 类似资料:
  • 我正在为android编写一个rtp视频流,它从android本地套接字读取h264编码的数据并将其打包。问题是我做到了,但我在客户端(Voip)中不断收到黑帧。 通信方式如下:Android- 有几件事我还不明白: 1) Android的mediarecorder给了我一个原始的h264流,我怎么知道NAL何时根据该流开始/结束?它没有任何0x000001模式,但它有一个0x0000(我假设它是

  • 我正试图创建一个呼叫录音机应用程序,然而,我的音频来源时,它的麦克风工作正常,但它不能捕捉第二个声音。 如果我更改为VOICE_CALL,我的应用程序关闭。 我在PlayStore上看到了数百个类似的应用程序,并想知道它们能够记录通话双方的秘密是什么。

  • 我有一个由AWS上的lambda触发的SNS,它会生成iOS消息推送,工作正常,但问题是声音没有发生… 我的有效载荷有什么问题?,声音和徽章还没有设置好。干杯

  • 我使用了较新的NotificationCompat builder,无法获得发出声音的通知。它将振动并闪烁灯光。android文档中说要设置一种我已经使用过的样式: 但是没有声音? 完整的代码:

  • 问题内容: 编辑:整个问题原来是网络问题,但是如果您看到有关如何优化流程的任何想法,我仍然会感激不尽。 我对Servlets还是很陌生,在不久的将来,我遇到了一个与性能有关的问题。我正在尝试通过Google Chrome浏览器中的XHR对象发送视频文件。视频文件存储在Blob对象中。我在JavaScript脚本中使用了此功能: 它运行良好,因为Blob到达Servlet,在这里我使用以下代码对其进

  • 问题内容: 我正在制作一个应用程序,用于将图像从Android设备发送到在PC上运行的Java应用程序。客户端(android)上的图片是,我将其转换为,以便通过蓝牙发送到服务器。 请注意,位图来自已压缩的文件,因此我不需要再次对其进行压缩。 我在服务器(Java)上使用以下代码: 客户端没有错误。但是我在服务器端(Java应用程序)遇到此异常: java.lang.IllegalArgument