sipML5 - 协商rtcpMuxPolicy

时间:2017-03-09 06:45:00

标签: google-chrome webrtc asterisk sipml

根据这个announcement: “从最近的Chrome Canary版本开始,默认的RTCP多路复用策略是”require“,而不是”negotiate“。这将影响下一个Chrome版本M57。”

我正在使用sipml5 API进行webrtc调用(后端是Asterisk)。当我尝试通过webrtc扩展程序进行调用时,我在chrome控制台中遇到了此错误,并且没有音频。

$(document).ready(function(){
   var x=$("#notif option:selected").val();
    if(x=="" || x==0){$("#count").remove();}
});

那么如何在sipml5中将rtcpMuxPolicy设置为“negotiate”?

  • 我的Chrome版本:58.0.3026.3 dev(64位)
  • SIPML5 API版本:2.0.3
  • Asterisk版本:13.11.0

1 个答案:

答案 0 :(得分:0)

在互联网上挖了很长时间后,我发现了以下几点,

引自星号论坛:https://issues.asterisk.org/jira/browse/ASTERISK-26732

  

Chrome 57在与WebRTC互操作方面发生了重大变化   网关。他们已经改变了之前的'#34;'谈判","要求"   说到rtcp-mux。 Asterisk,据我所知它没有   rtcp多路复用等在兼容性方面会破坏   使用WebRTC跨所有支持WebRTC的Asterisk版本。

引用chrome中的rtcpMuxPolicy:https://www.chromestatus.com/feature/5654810086866944

  

应用程序使用rtcpMuxPolicy指定其首选项   关于使用RTP / RTCP多路复用的政策。当政策是   "协商",RTP和RTCP的ICE候选者将是   云集。如果远程端点能够复用RTCP,   在RTP候选者上复用RTCP。如果不是,请同时使用RTP   和RTCP候选人分开。

根据谷歌小组论坛 - https://groups.google.com/forum/#!topic/discuss-webrtc/eM57DEy89MY

  

截至最近的Chrome Canary版本,默认RTCP   多路复用策略是"要求"而不是"协商"。这将   影响下一个Chrome版本,M57。这意味着提供/回答   与不支持RTCP复用的端点协商   将失败,导致错误:" ERROR_CONTENT。会话错误   description:无法设置RTCP mux过滤器。"我们可以做   这个错误更具描述性,但最重要的是   如果SDP不包含,setRemoteDescription将失败   " = RTCP-MUX&#34 ;.对于尚不支持RTCP的任何应用程序   多路复用,你可以通过显式设置来获得旧的行为   RTCRtpMuxPolicy到"协商"在RTCConfiguration中。例如:   pc = new RTCPeerConnection({rtcpMuxPolicy:" negotiate"})

简而言之,

  • 在先前版本的chrome rtcp multiplxing设置为' negotiate'
  • 从版本57开始,chrome将rtcp multiplxing更改为'要求'
  • Asterisk,据我所知,它不支持rtcp多路复用。
  • webrtc允许RTCRtpMuxPolicy标记选项"协商"和"要求"
  • 在Sipml5 API 2.0.3中,据我所知,没有设置RTCRtpMuxPolicy的选项。

解决方案: 我从2.0.3更新了sipml5 api到2.1.3。现在错误已更改为警告。

[Deprecation] The rtcpMuxPolicy option is being considered for removal and may be removed no earlier than M60, around August 2017. If you depend on it, please see https://www.chromestatus.com/features/5654810086866944 for more details.

现在一切正常。