gpt4 book ai didi

java - Android:通过 RTP (G.711 PCMU) 将 .wav 发送到 SIP 电话,基于 SipDroid/MjSIP 的声音非常嘈杂、噼啪作响

转载 作者:行者123 更新时间:2023-11-30 09:18:55 27 4
gpt4 key购买 nike

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

场景如下:Android 和 x-lite 都在同一个 WLAN 中,并且都连接到 FreeSwitch。我可以从安卓手机上调用 x-lite。如果在 x-lite 上接受调用,android 会发送 .wav 文件,我可以在 wireshark 中看到 RTP pakets (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 流,那么开头如下所示:

........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................................................... .......................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...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 ...等等

谁能告诉我为什么我听不到声音?

(也欢迎其他解决方案)编辑:

这是来自 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

最佳答案

我怀疑是打包。

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

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

关于java - Android:通过 RTP (G.711 PCMU) 将 .wav 发送到 SIP 电话,基于 SipDroid/MjSIP 的声音非常嘈杂、噼啪作响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18257438/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com