Sip 如何将WebRTC音频从Kurento发送到Avaya手机

Sip 如何将WebRTC音频从Kurento发送到Avaya手机,sip,rtp,kurento,avaya,mu-law,Sip,Rtp,Kurento,Avaya,Mu Law,我成功地使用Kurento的RtpEndpoint类型连接到多个Asterisk SIP服务器,以及直接连接到多个型号的SIP电话,但连接到Avaya SIP服务器不起作用,我正在试图找出原因。症状是已建立连接,但没有介质 对于RTP端点,Kurento生成以下SDP(我希望该SDP包含公共IP地址并删除视频部分),然后将其包含在SIPINVITE中: v=0 o=- 3807878922 3807878922 IN IP4 192.0.2.95 s=Kurento Media Server c

我成功地使用Kurento的
RtpEndpoint
类型连接到多个Asterisk SIP服务器,以及直接连接到多个型号的SIP电话,但连接到Avaya SIP服务器不起作用,我正在试图找出原因。症状是已建立连接,但没有介质

对于RTP端点,Kurento生成以下SDP(我希望该SDP包含公共IP地址并删除视频部分),然后将其包含在SIP
INVITE
中:

v=0
o=- 3807878922 3807878922 IN IP4 192.0.2.95
s=Kurento Media Server
c=IN IP4 192.0.2.95
t=0 0
m=audio 18848 RTP/AVPF 96 0 97
a=setup:actpass
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=rtpmap:96 opus/48000/2
a=rtpmap:97 AMR/8000
a=rtcp:18849
a=sendrecv
a=mid:audio0
a=ssrc:2835743000 cname:user3268188862@host-ad591d54
与星号服务器的工作连接会将以下SDP返回给Kurento:

v=0
o=root 55778749 55778749 IN IP4 198.51.100.252
s=Asterisk PBX 13.28.1
c=IN IP4 198.51.100.252
t=0 0
m=audio 11704 RTP/AVPF 0
a=rtpmap:0 PCMU/8000
a=maxptime:150
a=sendrecv
v=0
o=- 1598890119 2 IN IP4 203.0.113.100
s=-
c=IN IP4 0.0.0.0
b=AS:64
t=0 0
m=audio 0 RTP/AVP 96 0 97
a=inactive
a=rtpmap:96 opus/48000/2
a=rtpmap:97 AMR/8000
a=ptime:20
在Kurento日志中,我看到它说它正在转换这个连接

与Avaya服务器的非工作连接会将以下SDP返回给Kurento:

v=0
o=root 55778749 55778749 IN IP4 198.51.100.252
s=Asterisk PBX 13.28.1
c=IN IP4 198.51.100.252
t=0 0
m=audio 11704 RTP/AVPF 0
a=rtpmap:0 PCMU/8000
a=maxptime:150
a=sendrecv
v=0
o=- 1598890119 2 IN IP4 203.0.113.100
s=-
c=IN IP4 0.0.0.0
b=AS:64
t=0 0
m=audio 0 RTP/AVP 96 0 97
a=inactive
a=rtpmap:96 opus/48000/2
a=rtpmap:97 AMR/8000
a=ptime:20
如您所见,Avaya服务器响应说,它无法使用任何可用的编解码器,因此不会发送或接收媒体(
a=inactive

根据我发现的一些Avaya文档,Avaya SBCE至少支持以下编解码器的转码:

  • OPUS 12kbps窄带
  • OPUS 16kbps窄带
  • OPUS 18kbps宽带
  • G.722
  • G.711法律
  • G.711法律
  • G.726
  • G.729AB
Kurento支持使用PCMU(也称为G.711ulaw),如星号示例所示,但Avaya似乎拒绝使用。(注意:我以前认为它没有包含在SDP中,但它作为
m=audio
行中的
0
存在。)我尝试使用
rtpEndpoint.setAudioFormat(AudioCaps(AudioCodec.PCMU,8000))
强制使用PCMU,但没有帮助

我的第二个想法是使用
rtpEndpoint.setAudioFormat(AudioCaps(AudioCodec.OPUS,18000))
更改OPUS比特率。当我尝试这一点时,它不仅不适用于Avaya手机,而且也不再适用于Asterisk,因为Asterisk使用的是PCMU。我曾想过使用SDP将其更改为
opus/18000
,但这是不允许的,因为它明确指出:

媒体子类型(“opus”)以SDP“a=rtpmap”作为编码方式
名称“a=rtpmap”中的RTP时钟频率必须为48000,并且 通道数必须为2


我怎样才能让Kuranto和Avaya SBCE在他们之间发送媒体呢?

最后,我唯一能让它工作的方法就是在他们之间放置一台Kamailio/RTPEngine服务器,并允许它与双方单独协商。

最后,我能让它工作的唯一方法是在它们之间放置一个Kamailio/RTPEngine服务器,并允许它与双方单独协商