很明显,WebRTC使用自己的速率控制(GCC)来控制编码器的比特率,但我也找不到任何有关改变分辨率的信息。
WebRTC(或其他实时视频系统,如环聊,Skype)是否仅在实时摄取期间更改比特率而非分辨率? 如果它没有改变分辨率,那为什么呢?
根据下面显示的比特率,质量,分辨率曲线,仅使用单个固定分辨率来覆盖比特率变化似乎效率不高。
这是因为如果单个分辨率的比特率非常低,则质量会大幅下降。 (因为左侧曲线的斜率很大)
因此,在我看来,改变分辨率和比特率是必要和合理的,但我不确定这是否得到WebRTC,环聊,Skype或其他实时移动视频系统的支持。
图片参考:https://teradek.com/blogs/articles/what-is-the-optimal-bitrate-for-your-resolution
是的,WebRTC也会在带宽限制的情况下改变分辨率。
有一个控制面为这个甚至计划,称为degradationPreference:
const p = sender.getParameters();
console.log(p.degradationPreference); // "balanced" by default
p.degradationPreference = pick? "maintain-framerate" : "maintain-resolution";
await sender.setParameters(p);
但控制isn't implemented by anyone yet。实现通常会在当前进行自己的判断调用(这是默认的"balanced"
)。