Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript WebRTC更改带宽在Chrome上接收InvalidModificationError_Javascript_Google Chrome_Webrtc - Fatal编程技术网

Javascript WebRTC更改带宽在Chrome上接收InvalidModificationError

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

我试图通过以下示例修改带宽:

然而,我在Chrome上收到了这个错误

errorInvalidModificationError:setParameters()中修改的只读字段

Firefox成功更改了带宽。几个月前,它在Chrome上也能正常工作。突然收到这个错误,我搜索了一下,仍然没有找到任何解决方法,我可以知道如何修复这个错误吗?多谢各位

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)”。谢谢你的详细解释。