如何更改Webrtc rtcpMuxPolicy?



我正在尝试更改rtcpMuxPolicy以及bundlePolicy,但似乎无法更改

这是我的代码:

尝试 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网络解决方案,并且在流式传输视频时一切正常,当我添加数据通道时出现问题,即

sendChannel = pc.createDataChannel('sendDataChannel');

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

setSDP 错误: 无法设置远程产品/服务 SDP: 会话错误代码: ERROR_CONTENT。 会话错误说明:无法设置 RTCP 多路复用器 滤波器。。

首先,删除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'});

其次,请注意,即使某些浏览器支持rtcpMuxPolicy'negotiate'值控制的功能在规范中标记为"有风险的功能">,因此很可能不支持设置此值。

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

相关内容

  • 没有找到相关文章

最新更新