根据此公告:"截至最新的Chrome Canary构建,默认的RTCP多路复用策略是"要求",而不是"协商"。这将影响下一个Chrome版本M57。
。我正在使用SIPML5 API进行WebRTC调用(后端是星号)。当我尝试从WebRTC扩展程序打来电话时,我在Chrome Console中获得了此错误,并且没有音频。
onSetRemoteDescriptionError
DOMException: Failed to set remote answer sdp: Session error code: ERROR_CONTENT.
Session error description: rtcpMuxPolicy is 'require', but media description does not contain 'a=rtcp-mux'..
那么,我如何将rtcpmuxpolicy设置为在sipml5中"协商"?
- 我的Chrome版本:58.0.3026.3 DEV(64位)
- SIPML5 API版本:2.0.3
- 星号版本:13.11.0
在互联网上挖了很长时间后,我发现了以下几点,
从星号论坛引用:https://issues.asterisk.org/jira/browse/browse/asterisk-26732
Chrome 57与WEBRTC互动时有破坏的变化 网关。他们已将以前的"谈判"更改为"要求" 当涉及RTCP-MUX时。星号,据我了解,它没有 RTCP多路复用,因此在兼容性方面会破裂 在所有版本的星号上都支持WebRTC。
引用chrome中的rtcpmuxpolicy:https://www.chromestatus.com/feature/56548100868666944
应用程序使用RTCPMUXPOLICY指定其首选 有关使用RTP/RTCP多路复用的政策。当政策是 "谈判",RTP和RTCP的ICE候选者将是 聚集。如果远程端点能够多路复用RTCP,则 RTP候选物上的多重RTCP。如果不是,请同时使用RTP 和RTCP候选人。
根据Google组论坛-https://groups.google.com/forum/# !! Topic/discuss-webrtc/em57dey89my
截至最近的Chrome Canary构建,默认RTCP 多路复用策略是"要求",而不是"协商"。这会 影响下一个Chrome版本M57。这意味着提供/答案 端点的谈判不支持RTCP多路复用 将失败,导致错误:" error_content。会话错误 描述:无法设置RTCP MUX过滤器。"我们可能可以做 此错误更具描述性,但最重要的是 如果SDP不包含SetRemoteDescription " A = RTCP-MUX"。对于任何尚未支持RTCP的应用程序 多路复用,您可以通过明确设置 rtcrtpmuxpolicy在rtcconfiguration中"协商"。例如: pc = new rtcpeerconnection({rtcpmuxpolicy:"协商"})
简而言之,
- 在以前版本的Chrome RTCP乘数设置为"谈判"
- 从57版chrome开始,将RTCP乘以" repure"
- 星号,据我了解,它不支持RTCP多路复用。
- webrtc允许rtcrtpmuxpolicy标志选项"谈判"one_answers" require"
- 在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.
现在一切正常。