Javascript WebRTC更改带宽在Chrome上接收InvalidModificationError
我试图通过以下示例修改带宽: 然而,我在Chrome上收到了这个错误 errorInvalidModificationError:setParameters()中修改的只读字段 Firefox成功更改了带宽。几个月前,它在Chrome上也能正常工作。突然收到这个错误,我搜索了一下,仍然没有找到任何解决方法,我可以知道如何修复这个错误吗?多谢各位Javascript WebRTC更改带宽在Chrome上接收InvalidModificationError,javascript,google-chrome,webrtc,Javascript,Google Chrome,Webrtc,我试图通过以下示例修改带宽: 然而,我在Chrome上收到了这个错误 errorInvalidModificationError:setParameters()中修改的只读字段 Firefox成功更改了带宽。几个月前,它在Chrome上也能正常工作。突然收到这个错误,我搜索了一下,仍然没有找到任何解决方法,我可以知道如何修复这个错误吗?多谢各位 var bandwidth = 500; // Loop through each track v
var bandwidth = 500;
// Loop through each track
var i;
for (i = 0; i < peers[peer_id].getSenders().length; i++) {
var sender = peers[peer_id].getSenders()[i];
if(sender.track.kind === "video"){
var parameters = sender.getParameters();
if (!parameters.encodings) {
parameters.encodings = [{}];
}
parameters.encodings = [{}];
parameters.encodings[0].maxBitrate = bandwidth * 1000;
sender.setParameters(parameters).then(success, error);
function success(){
console.log("bandwidth success adjust");
};
function error(err){
console.log("bandwidth error"+err);
};
};
}
var带宽=500;
//在每条轨道上绕一圈
var i;
对于(i=0;i
删除第二个参数。编码=[{}]
它意外地删除了编码中第一个编码的所有属性,其中一些属性是只读的,不允许修改
该方法要求其输入有效,并且只允许修改某些编码
属性
它被设计成一项交易:
const parameters = pc.getParemeters();
// modify certain parameters only
await pc.setParemeters(parameters);
这是由getParameters()
强制执行的,包括一个setParameters()
检查的。如果它或某些其他只读属性已被修改,您将得到InvalidModificationError
Firefox太宽松了
Firefox实现了一个非常早期的API版本,这个版本过于宽松。我正在修理这个
因为Firefox,所以只需要以下行:
if (!parameters.encodings) {
parameters.encodings = [{}];
}
因为只有在Firefox中,从getParameters()
返回的编码才会为空
在Chrome和规范中,编码保证存在并且至少包含一项。尝试删除第二个参数。编码=[{}]代码>。它成功了,非常感谢@jib,你真的很棒。这是我的错误,我不熟悉这行“if(!parameters.encodings)”,不知道这是问题的主要原因。再次感谢。现在大家好@jib,我终于理解了“if(!parameters.encodings)”。谢谢你的详细解释。