gpt4 book ai didi

javascript - WebRTC 更改带宽在 Chrome 上接收 InvalidModificationError

转载 作者:行者123 更新时间:2023-11-30 13:55:23 25 4
gpt4 key购买 nike

我正在尝试按照以下示例修改带宽:https://webrtc.github.io/samples/src/content/peerconnection/bandwidth/

但是,我在 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);
};
};
}

最佳答案

删除第二个parameters.encodings = [{}]; 它不小心删除了encodings中第一个编码的所有属性,其中一些属性是为了读取-仅且不允许修改。

pc.setParameters()方法要求其输入来自 pc.getParameters()有效,并且只允许修改某些 encodings 属性。

它被设计成一个事务:

const parameters = pc.getParemeters();
// modify certain parameters only
await pc.setParemeters(parameters);

这是由 getParameters() 强制执行的,包括 parameters.transactionId ,其中 setParameters() 检查。如果它或某些其他本应为只读的属性已被修改,您将得到 InvalidModificationError

Firefox 太宽容了

Firefox 实现了一个非常宽松的 API 的早期版本。 Bug 1401592解决此问题的轨道。

只有 Firefox 才需要以下行:

  if (!parameters.encodings) {
parameters.encodings = [{}];
}

因为只有在 Firefox 中,getParameters() 返回的 encodings 才会为空。

在 Chrome 和规范中,encodings 保证存在并且至少包含一项。

关于javascript - WebRTC 更改带宽在 Chrome 上接收 InvalidModificationError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57400849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com