【问题标题】:How to change Webrtc rtcpMuxPolicy?如何更改 Webrtc rtcpMuxPolicy?
【发布时间】:2020-01-07 16:42:43
【问题描述】:

我正在尝试更改rtcpMuxPolicybundlePolicy,但似乎无法更改

这是我的代码:

尝试 1:

var servers = {
    'iceServers': [{
        'urls': 'stun-url..'
    }, {
        'urls': 'stun-url-2..'
    }, {
        'urls': 'turn-url..',
        'credential': 'psw',
        'username': 'user'
    }],
    peerIdentity: [{bundlePolicy: 'max-bundle', rtcpMuxPolicy: 'negotiate'}]//added this line
};

var pc;
var sendChannel;

navigator.getUserMedia = (navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia);

pc = new RTCPeerConnection(servers);

尝试 2:

var servers = {
        'iceServers': [{
            'urls': 'stun-url..'
        }, {
            'urls': 'stun-url-2..'
        }, {
            'urls': 'turn-url..',
            'credential': 'psw',
            'username': 'user'
        }]
    };

    var pc;
    var sendChannel;

    navigator.getUserMedia = (navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia);

    pc = new RTCPeerConnection(servers);
    pc.setConfiguration([{bundlePolicy: 'max-bundle', rtcpMuxPolicy: 'negotiate'}]);

对于这两个示例,我仍然看到默认值:

pc.getConfiguration()

bundlePolicy: "balanced"
rtcpMuxPolicy: "require"

我只能注意到一个变化,那就是 iceServers 数组是空的,但是 bundlePolicyrtcpMuxPolicy 仍然是默认设置。

我有与 Android 应用程序通信的 WebRtc 网络解决方案,并且在流式传输视频时一切正常,当我添加 dataChannel 时出现问题,即

sendChannel = pc.createDataChannel('sendDataChannel');

在我的网络解决方案中添加上述行后,android 会抛出错误:

setSDP 错误:无法设置远程报价 sdp:会话错误代码: 错误内容。会话错误描述:无法设置 RTCP 多路复用器 过滤..

【问题讨论】:

  • 删除 peerIdentity: [{}]。只有 iceServers 需要一个数组。

标签: javascript webrtc rtcp rtcpeerconnection


【解决方案1】:

首先,删除peerIdentity: [{}]。只有 iceServers 需要一个数组。语法是:

const pc = new RTCPeerConnection({
  iceServers: [{urls: 'stun-url..'}, {urls: 'stun-url-2..'}],
  bundlePolicy: 'max-bundle', // add this line
  rtcpMuxPolicy: 'negotiate'  // and this one
});
pc.setConfiguration({bundlePolicy: 'max-bundle', rtcpMuxPolicy: 'negotiate'});

其次,请注意即使some browsers 支持rtcpMuxPolicy'negotiate' 值控制的功能在specification 中标记为“Feature at risk”,因此设置此值是很可能不支持。

规范说:“用户代理可能不实现非多路复用 RTCP,在这种情况下,它将拒绝使用协商策略构建 RTCPeerConnection 的尝试。”

【讨论】:

    猜你喜欢
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 2021-02-24
    • 2020-04-29
    • 1970-01-01
    相关资源
    最近更新 更多