限制 WebRTC 比特率:Firefox 的问题
Limiting WebRTC bitrate: issues with Firefox
我正在尝试限制从浏览器发送的 WebRTC 视频流的比特率。对于基于 Chromium 的浏览器,我只需在 addTransceiver
时间设置 sendEncodings
字段的 maxBitrate
字段。由于 Firefox 不支持 sendEncodings
,我需要在发件人上调用 getParameters
,调整其 encodings
字段,然后调用 setParameters
.
这在联播情况下效果很好;然而,在非联播情况下(encodings
是一个包含单个条目的数组),Firefox 似乎忽略了 maxBitrate
字段,并且始终以其最大比特率 (2.5kbit/s) 发送。
在非联播的情况下,encodings[0].maxBitrate
是否应该在 Firefox 中工作?
经过一些调查,如果设置了 rid
字段,则 Firefox 不遵守 non-simulcast 情况下的带宽限制。所以这在 Chromium 和 Firefox 中都有效:
let p = sender.getParameters();
p.encodings = [{maxBitrate: 700000}];
await sender.setParameters(p);
虽然这只适用于 Chromium:
let p = sender.getParameters();
p.encodings = [{rid: 'h', maxBitrate: 700000}];
await sender.setParameters(p);
我正在尝试限制从浏览器发送的 WebRTC 视频流的比特率。对于基于 Chromium 的浏览器,我只需在 addTransceiver
时间设置 sendEncodings
字段的 maxBitrate
字段。由于 Firefox 不支持 sendEncodings
,我需要在发件人上调用 getParameters
,调整其 encodings
字段,然后调用 setParameters
.
这在联播情况下效果很好;然而,在非联播情况下(encodings
是一个包含单个条目的数组),Firefox 似乎忽略了 maxBitrate
字段,并且始终以其最大比特率 (2.5kbit/s) 发送。
在非联播的情况下,encodings[0].maxBitrate
是否应该在 Firefox 中工作?
经过一些调查,如果设置了 rid
字段,则 Firefox 不遵守 non-simulcast 情况下的带宽限制。所以这在 Chromium 和 Firefox 中都有效:
let p = sender.getParameters();
p.encodings = [{maxBitrate: 700000}];
await sender.setParameters(p);
虽然这只适用于 Chromium:
let p = sender.getParameters();
p.encodings = [{rid: 'h', maxBitrate: 700000}];
await sender.setParameters(p);